#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
答案 0 :(得分:1)
如果您想“返回”结果集,则必须使用CREATE PROCEDURE
而不是CREATE FUNCTION
说明只有在返回单个值时才能使用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
按预期工作时才有效。