-3

これをmssqlから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 ; 
4

1 に答える 1

1

MySQL で変数に値を選択するための構文はselect ... into. たとえば、次のように記述できます。

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

「関数から結果セットを返すことは許可されていません」というメッセージは、現在の select ステートメントが関数から結果セットを返し、関数が単一の値しか返せないことを意味します。

于 2012-08-03T09:03:09.080 に答える