私はcsvでいくつかのレポートを生成するストアドプロシージャを作成しようとしています。MySQLのストアドプロシージャは空のパラメータをオーバーライドします
CREATE PROCEDURE testSP (IN filename VARCHAR(100),
IN study VARCHAR(100))
SPは、 'study'入力パラメータに基づいて条件付きWHERE句を含むクエリを作成します。
call testSP('/tmp/test.csv','study1');
をeg.g
DECLARE studyFilter TEXT DEFAULT '';
IF (study IS NOT NULL AND study != '') THEN
SET @studyFilter = CONCAT(' AND st.goid like \'%',study,'%\' ');
END IF;
私がいない空の学習パラメータでSPを呼び出す場合、これはうまく実行し、しかし、私は代わりに空のパラメーター有するので、空の調査でSPを呼び出す場合SPは研究の最後の値を使用します。
私がコールすると、順番に testSP( '/ tmp/test1.csv'、 'study1');
call testSP('/tmp/test2.csv','');
パラメータの値がまだ 'study1'であるため、クエリに間違ったWHERE句が含まれています。
これはどのように可能ですか?そのパラメータ値を正しくリセットするにはどうすればよいですか?私はMySQL 6.1とMySQL Workbenchを使ってSPをテストしています。ありがとう!
DECLARE studyFilter TEXT DEFAULT '';
IF (study IS NOT NULL AND study != '') THEN
SET studyFilter = CONCAT(' AND st.goid like \'%',study,'%\' ');
END IF;