2011-01-18 2 views
0
DELIMITER // 
CREATE PROCEDURE compare (x INT, y INT) RETURNS INT 
BEGIN 
    DECLARE test INT; 

    IF x > y 
     THEN SET test = 1; 
    ELSEIF y > x 
     THEN SET test = -1; 
    ELSE SET test = 0; 

    END IF; 

    RETURN test; 
END 
// 

Может ли кто-нибудь показать, что здесь ошибка? PhpMyAdmin говоритВыясните синтаксическую ошибку в этой Хранимой процедуре

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INT BEGIN DECLARE test INT; IF x > y THEN SET test = 1; ELSEIF y >' at line 1 

ответ

4

Вы должны CREATE FUNCTION вместо потому что процедуры не могут ничего, только функции могут возвращать.

+0

Спасибо, человек с пучком – Naresh

+0

@Lukman. RE: процедуры ничего не могут вернуть, только функции могут ... С MySQL хранимыми процедурами это не совсем так. В MySQL вы можете объявлять как параметры IN, так и OUT в заявлении о заявлении хранимой процедуры. – Jason

+0

@Jason: Параметры OUT не совпадают с RETURN. Они совершенно разные. Вы можете использовать функции в инструкции SELECT именно потому, что они могут «возвращаться». OTOH, даже если вы используете параметры OUT, вы все равно не можете поместить proc в инструкцию SELECT. – Lukman

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