2017-10-08 10 views
0

私はSQL ServerのストアドプロシージャをMySQLに変換し、問題を実行しています。私はストアドプロシージャを持っていますが、エラーを出さずにデータを返すのではなく、問題を解決するのが見えません。クエリ自体は正しく、データを返しますが、ストアドプロシージャでは機能していないようです。これは、実際のクエリを単純化したものです(FYIを参照)。MySQLのストアドプロシージャ - それが機能しない場合

ストアドプロシージャを作成するためのSQLは次のとおりです。

DROP PROCEDURE IF EXISTS `sp_GetVolunteerAwardsList`; 
    DELIMITER // 

    CREATE PROCEDURE `sp_GetVolunteerList`(IN glAward_in int) 
    BEGIN 
     DECLARE glAward_In INT; 
     DECLARE awardType_In varchar(100); 
     DECLARE awardActive INT; 

     IF (glAward_In) = 0 THEN 
      SELECT * FROM tbl_volunteer 
     ELSEIF (glAward_In) = 1 THEN 
      SELECT * FROM tbl_volunteerpositions 
     END IF; 
    END 
// 

はいつものように、どのような援助が最もいただければ幸いです。

+0

まず、 "簡素化された"クエリでspを実行するのと同じ問題がありますか? – Juan

+0

'glAward_In'この変数はいくつかの値を持っていますか?値を表示してみてください。 –

答えて

1

glAward_Inパラメータまたは変数を確認します。 SPはパラメータglAward_in、iを小文字で受信しています。 次に、別の変数glAward_In、iを大文字で宣言するDECLAREがあります。

ifは、glAward_Inを大文字で使用し、SPのどの場所にも設定されていません。また、小文字のパラメータはSPのどこでも使用されません。

大文字の変数の宣言を削除し、IF評価に小文字のパラメータを使用する必要があると思います。

+0

ありがとうございます - 私は本当のsprocが大文字と小文字の区別で大丈夫だと信じていますが、ただ安全であるように、私はすべてを変えました。しかし、それを殺したのは宣告だった。一度それを取り除くと、すべてがうまくいった。私はsprocsのif-then-elseステートメントでの以前の試みでは成功しなかったが、それを整理する時間はなかった。これは私の将来を大きく助け、私が働くことを知っているものを私に与えてくれるでしょう。とても感謝しています。 – 43rdworld

関連する問題