-1

#1415 - Not allowed to return a result set from a function

DELIMITER $$
CREATE FUNCTION Test.FnGetLastDayLastFinYear (pdate datetime)
RETURNS DATETIME
BEGIN

Declare MonthNo int;
Declare YearNo int;

DECLARE OUTPUTDATE DATETIME;    

SELECT MonthNo = DATEPART(MONTH,@pdate);

if(@MonthNo <= 3)
then

        SELECT @YearNo = (DatePart(Year,getdate()) - 1);


        Select @OUTPUTDATE = Date_Format(@YearNo,'%d/%m/%Y');


ELSE

        Select  @OUTPUTDATE= Date_Format(@pdate,'%d/%m/%Y');
END If;

RETURN @OUTPUTDATE;
END
4

1 回答 1

1

如果你想“返回”一个结果集,那么你必须使用CREATE PROCEDURE而不是CREATE FUNCTION

文档中解释说,您CREATE FUNCTION只能在返回单个值时使用。

更新:

如果你想在你的变量中设置FUNCTION并返回它,那么我建议使用

SELECT field INTO your-variable FROM rest-of-normal-select;

例如

Declare MonthNo int;
SELECT DATEPART(MONTH,pdate) INTO MonthNo;

仅当DATEPART它本身是FUNCTION按预期工作时才有效。

于 2013-05-13T09:38:39.823 回答