MySQL函数返回错误

时间:2013-05-13 09:35:47

标签: mysql

#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

1 个答案:

答案 0 :(得分:1)

如果您想“返回”结果集,则必须使用CREATE PROCEDURE而不是CREATE FUNCTION

docu中的

说明只有在返回单个值时才能使用CREATE FUNCTION

<强>更新

如果您想在FUNCTION中设置变量并将其归还,那么我建议您使用

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

e.g。

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

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