2012-08-03 47 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