-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 PROCEDURECREATE 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 に答える