2012-08-03 54 views
-3

我这个转换到MySQL从MSSQL,但它给我这个错误:转换的Microsoft SQL到mysql

错误代码:1415不允许从函数返回的结果集

什么我做错了吗?

DELIMITER $$ 

CREATE FUNCTION GetPositionList (orderDetID NUMERIC) 
RETURNS NVARCHAR(200)  
DETERMINISTIC 
BEGIN 
DECLARE strToReturn NVARCHAR(50); 
DECLARE strPos NVARCHAR(50); 
DECLARE strPosOtherRes NVARCHAR(50); 
DECLARE strTPos NVARCHAR(50); 
DECLARE strTPosOtherResr NVARCHAR(50) 


SET strToReturn = ''; 
SET strPos = SELECT `POSITION` FROM orderdetails WHERE OrderID = orderDetID; 
SET strPosOtherRes = SELECT SecPosition FROM orderdetails WHERE OrderID = orderDetID; 
SET strTPos = SELECT TeamPosition FROM orderdetails WHERE OrderID = orderDetID; 
SET strTPosOtherResr = SELECT TeamSecPosition FROM orderdetails WHERE OrderID = orderDetID; 


IF(strPos != '') THEN SET strToReturn = CONCAT(strPos , ','); 
END IF; 
IF(strPosOtherRes != '') THEN SET strToReturn = CONCAT(strToReturn , strPosOtherRes , ','); 
END IF; 
IF(strTPos != '') THEN SET strToReturn = CONCAT(strToReturn , strTPos , ','); 
END IF; 
IF(strTPosOtherResr != '') THEN SET strToReturn = CONCAT(strToReturn , strTPosOtherResr , ','); 
END IF;  
RETURN SUBSTRING(strToReturn, 0, LENGTH(strToReturn)); 
END $$ 
DELIMITER ; 
+2

问题是什么? – 2012-08-03 07:29:33

+0

Stackoverflow不是一个通用转换器。请阅读常见问题http://stackoverflow.com/faq#questions – 2012-08-03 07:31:23

+0

我从mssql转换成mysql,但它给了我这个错误:'错误代码:1415不允许从函数返回结果集' – Raheel 2012-08-03 08:26:58

回答

1

在MySQL中为变量选择值的语法是select ... into。例如,你可以写:

SELECT POSITION, SecPosition FROM orderdetails 
WHERE OrderID = orderDetID INTO strPos, strPosOtherRes; 

消息“不允许从函数返回的结果集”指的SELECT语句因为他们的立场,现在会从功能返回一个结果,而功能只能返回单个值。

+0

抱歉亲爱的,现在它给语法错误... :( – Raheel 2012-08-03 11:01:59

+0

用你的新程序和错误信息更新你的问题,或者提出一个新的问题。如果语法错误来自SELECT ... INTO你可以参考这个页面:http ://dev.mysql.com/doc/refman/5.5/en/select-into.html – Joni 2012-08-03 12:15:20

+0

已更新的问题。请立即检查。 – Raheel 2012-08-03 12:19:02