日期:2014-05-16  浏览次数:20797 次

mysql function 疑問
1.mysql function 內不能使用 

prepare stmt from @sqlcounts;
execute stmt;
deallocate prepare stmt;

這樣的功能嗎?

2.在 mysql function 內調用一個 Stored Procedure 後, 怎么下面的 return 都沒有作用了呢? 程式碼如下:

BEGIN
declare cnt int;
call test_station_vaild(); #為Procedure
if cnt = 0 then
return 0;
else
return 1;
end if;
END

以上請高手指點迷津, thanks.

------解决方案--------------------
1、UDF 中不能使用Dynamic SQL
------解决方案--------------------
2、
DELIMITER $$
DROP FUNCTION IF EXISTS DD$$
CREATE FUNCTION `testa`.`DD`()
RETURNS VARCHAR(100)
BEGIN
DECLARE cnt INT;
CALL dd1();
IF cnt=1 THEN
RETURN '123';
ELSE
RETURN '456';
END IF ;

END$$

DELIMITER ;

测试返回456
------解决方案--------------------
探讨
那 FUNCTION 內調用 Stored Procedure 後的問題呢?
(因為 UDF 中不能使用Dynamic SQL, 所以我把 Dynamic SQL 放至Stored Procedure 內執行), 然後用 OUT 出來給 FUNCTION 的變量, 但在 FUNCTION 拿不到呢?

------解决方案--------------------
建议能给出例子,这样别人可以直接根据你的需求来帮你看看有没有方法,甚至可以在自己机器上写代码进行调试。

(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
 
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
 
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。


------解决方案--------------------
你只要抓住核心的东西,就可以顺利解决问题了。

函数只能有返回值,而不允许有输出!!!