MySQL stored procedure return Wert
Muss ich schaffen, eine SP, die einen Wert zurückgibt, wenn es gültig ist oder nicht. Aber es kommt nicht alles und ich weiß nicht, warum?
CREATE DEFINER=`root`@`localhost` PROCEDURE `validar_egreso`(
IN codigo_producto VARCHAR(100),
IN cantidad INT,
OUT valido INT(11)
)
BEGIN
DECLARE resta INT(11);
SET resta = 0;
SELECT (s.stock - cantidad) INTO resta
FROM stock AS s
WHERE codigo_producto = s.codigo;
IF (resta > s.stock_minimo) THEN
SET valido = 1;
ELSE
SET valido = -1;
END IF;
SELECT valido;
END
Ausnahmebehandlung in Ihrem SP.
InformationsquelleAutor Juanma | 2014-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie getan haben, die gespeicherte Prozedur korrekt, aber ich denke, Sie haben nicht verwiesen wird
valido
variable richtig. Ich war auf der Suche auf einige Beispiele und Sie haben ein @ - symbol vor die parameter, wie diese@Valido
Diese Aussage
SELECT valido;
sollte das so seinSELECT @valido;
Blick auf diesen link mysql stored procedure: out-parameter. Beachten Sie die Lösung mit 7 upvotes. Er hat die Referenz die parameter, die mit einem @ - Zeichen, daher habe ich Ihnen vorgeschlagen, fügen Sie ein @ - Zeichen vor den parameter valido
Ich hoffe, das funktioniert für Sie. wenn es nicht Stimmen und markieren Sie es als Antwort. Wenn nicht, Sag es mir.
Putting @ vor die variable macht es zu einem session-spezifische Benutzer-definierte Variablen, welche gut funktioniert. Sie können auch deklarieren Sie die variable als
DECLARE valido INT
.InformationsquelleAutor mfredy
Hinzufügen:
DELIMITER
am Anfang und am Ende der SP.validar_egreso
; am Anfang@variableName
.Dies funktioniert für mich. (Ich modifiziert einige Teil des scripts so laufen kann JEDER es mit sich, dass Ihre Tabellen).
InformationsquelleAutor biniam
Aktualisieren Ihre SP und Griff die Ausnahme in der es mit declare handler - mit Diagnose, so dass Sie wissen, ob es eine Ausnahme.
z.B.
Die MySQL 5.6 parser sagt mir, dass die END-Anweisung auf die SQLEXCEPTION-handler-block muss ein Semikolon, und dass das DECLARE muss vor dem block, erklärt der Hundeführer. siehe "13.6.4.1 Lokale Variable DEKLARIEREN Syntax" dev.mysql.com/doc/refman/5.7/en/declare-local-variable.html.
InformationsquelleAutor Rishi Vedpathak