2013-05-13 6 views
-1

#1415 - Not allowed to return a result set from a functionфункция MySQL возвращение ошибка

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

И вопрос ...? – imulsion

+1

Просто публиковать кучу кода, а не задавать вопрос не полезно ... в чем ваш вопрос? – naththedeveloper

+0

Я действительно очень люблю это .... Я получаю эту ошибку при создании этой функции пользователя .... – user2377154

ответ

1

Если вы хотите, чтобы «вернуть» результирующий набор, то вы должны использовать CREATE PROCEDURE и не CREATE FUNCTION

в docu это объясняется тем, что вы можете использовать только CREATE FUNCTION когда вы возвращаете одно значение.

UPDATE:

Если вы хотите установить переменную в вашей FUNCTION и вернуть его, то я бы предложил использовать

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

например

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

Это работает только тогда, когда сам DATEPART является FUNCTION, который работает, как ожидалось.

+0

Очевидно, он хочет вернуть одно значение из функции ...? –

+0

Я хочу вернуть одно значение из функции – user2377154

+0

Я добавил свое предложение о том, как я это сделаю. Я не знаком с вашим подходом к назначению. Я использую '' 'SELECT INTO''', и это отлично работает в моей базе данных. – luksch

Смежные вопросы