首頁 >資料庫 >mysql教程 >mysql預存程序中的多個select問題

mysql預存程序中的多個select問題

WBOY
WBOY原創
2016-08-29 08:36:201305瀏覽

mysql

在預存過程中有多個select,但我想只讓最後那個select作為結果集返回,怎麼屏蔽其他的select輸出?

回覆內容:

mysql中要取得預存程序的回傳值,可以增加一個out參數,用來回傳。

mysql中預存程序的例子:
CREATE PROCEDURE addvoucher (
IN userid INT,
IN voucherid INT,
OUT result INT
)
BEGIN
SELECT
@endate_a := endate ,@batch_a := batch ,@c_count_a := c_count,
@isdead_a := isdead
FROM
t_voucher
WHERE
id = voucherid;

SET autocommit = 0;
IF EXISTS (
SELECT
*
FROM
t_user_voucher tuv,
t_voucher tv
WHERE
tv.id = tuv.voucherid
AND tv.batch =@batch_a
) THEN

SET result = 1;-- 已存在

SELECT
result;

ELSE

IF @c_count_a > 0 THEN

IF (
TO_DAYS(@endate_a) - TO_DAYS(NOW())
) > 0 THEN

IF @isdead_a = 1 THEN
INSERT INTO t_user_voucher (userid, voucherid, isdead)
VALUES
(userid, voucherid, 1);
UPDATE t_voucher SET c_count = c_count-1 where id = voucherid;

SET result = 0;-- 成功
END;

<code>
</code>

這不是我想要的結果,你的答案不對我的問題

1)首先你如果可以改預存程序嗎?如果可以把前面幾個屏蔽掉算了,既然不需要為什麼要查詢呢?
2)如果你不能改,最笨的辦髮就是你在數一下你要的那個select是第幾個,然後在回傳的結果裡取第幾個結果集

你先看看前面那幾個select是不是必要的,咱們再想解決辦法

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn