Heim >Datenbank >MySQL-Tutorial >Mehrere Auswahlprobleme in gespeicherten MySQL-Prozeduren
mysql
Es gibt mehrere Auswahlen in der gespeicherten Prozedur, aber ich möchte nur die letzte Auswahl als Ergebnismenge zurückgeben. Wie kann ich andere Auswahlausgaben blockieren?
Um den Rückgabewert der gespeicherten Prozedur in MySQL zu erhalten, können Sie einen Out-Parameter für die Rückgabe hinzufügen.
Beispiel einer gespeicherten Prozedur in MySQL:
VERFAHREN-Zusatzgutschein ERSTELLEN (
IN Benutzer-ID INT,
IN Voucher-ID INT,
OUT-Ergebnis INT
)
BEGINNEN
AUSWÄHLEN
@endate_a := endate ,@batch_a := batch ,@c_count_a := c_count,
@isdead_a := isdead
VON
t_voucher
WO
id = Voucherid;
SET autocommit = 0;
WENN EXISTIERT (
AUSWÄHLEN
*
VON
t_user_voucher tuv,
t_voucher tv
WO
tv.id = tuv.voucherid
UND tv.batch =@batch_a
) DANN
SET result = 1;-- existiert bereits
AUSWÄHLEN
Ergebnis;
SONST
WENN @c_count_a > 0 DANN
WENN (
TO_DAYS(@endate_a) – TO_DAYS(NOW())
) > 0 DANN
WENN @isdead_a = 1 DANN
INSERT INTO t_user_voucher (Benutzer-ID, Gutschein-ID, isdead)
WERTE
(Benutzer-ID, Gutschein-ID, 1);
UPDATE t_voucher SET c_count = c_count-1 wobei id = Voucherid;
SET-Ergebnis = 0;--Erfolg
ENDE;
<code> </code>
Das ist nicht das Ergebnis, das ich will, Ihre Antwort ist falsch für meine Frage
1) Können Sie zunächst die gespeicherte Prozedur ändern? Wenn Sie nur die ersten blockieren können, warum sollten Sie sie dann abfragen, wenn Sie sie nicht benötigen?
2) Wenn Sie es nicht ändern können, ist es am dümmsten, die Nummer der gewünschten Auswahl zu zählen und dann die Nummer der Ergebnismenge im zurückgegebenen Ergebnis
Bitte prüfen Sie zunächst, ob die vorherigen Optionen notwendig sind, dann können wir uns eine Lösung überlegen