mysql
ストアド プロシージャに複数の選択がありますが、最後の選択のみを結果セットとして返したいのですが、他の選択出力をブロックするにはどうすればよいですか?
mysql でストアド プロシージャの戻り値を取得するには、返す out パラメータを追加できます。
mysqlのストアドプロシージャの例:
手順の作成 addvoucher (
IN ユーザー ID INT、
IN バウチャーID INT、
OUT 結果 INT
)
始めましょう
選択
@endate_a := 終了日 ,@batch_a := バッチ ,@c_count_a := c_count,
@isdead_a := 死んだ
から
t_バウチャー
どこ
id = バウチャーID;
自動コミット = 0;
を設定します
存在する場合 (
選択
*
から
t_user_voucher トゥヴ、
t_バウチャーテレビ
どこ
tv.id = tuv.voucherid
かつ tv.batch =@batch_a
)それでは
SET result = 1;-- すでに存在します
選択
結果;
他
@c_count_a > 0 の場合
IF (
TO_DAYS(@endate_a) - TO_DAYS(NOW())
) > 0 では
IF @isdead_a = 1 THEN
t_user_voucher (ユーザー ID、バウチャー ID、isdead) に挿入します
価値観
(ユーザーID、バウチャーID、1);
UPDATE t_voucher SET c_count = c_count-1、ここで id = voteid;
SET 結果 = 0;--成功
終わり;
これは私が望む結果ではありません、私の質問に対するあなたの答えは間違っています
1) まず、ストアドプロシージャを変更できますか?最初のいくつかをブロックできるのであれば、必要ないのにクエリを実行する必要はありません。
2) 変更できない場合、最も愚かな方法は、必要な選択の数を数えて、返された結果の結果セットの数を取得することです
まず前の選択肢が必要かどうかを確認し、それから解決策を考えます