2011-01-18 8 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と同じではありません。彼らは全く異なっている。関数は、 'return'することができるので、SELECT文で正確に使用することができます。 OTOHでは、OUTパラメータを使用していても、SELECT文にストアprocを置くことはできません。 @ Lukman。 – Lukman

関連する問題