5 Stimmen

Benannte Parameter für gespeicherte Prozeduren in MySQL

Kann ich benannte Parameter für Stored Procedures in MySQL verwenden? Ich muss Stored Procedures etwa so aufrufen:

CALL stored_procedure(@param1 = "foo1", @param2 = "foo2");

Die Antwort lautet

CALL stored_procedure(@param1 := "foo1", @param2 := "foo2");

Danke für Pentium10.

9voto

Bill Karwin Punkte 493880

MySQL Stored Procedures unterstützen keine benannten Parameter in beliebiger Reihenfolge. Diese Funktion wurde bereits in der Vergangenheit angefordert, zum Beispiel:

Wie Sie festgestellt haben, hat die Umgehung der Verwendung von Ausdrücken zum Setzen von Sitzungsvariablen nichts mit der Reihenfolge der Parameter zu tun. Mit anderen Worten: Sie können Folgendes tun:

CALL stored_procedure(@param1 := "foo1", @param2 := "foo2");

Aber die Werte "foo1" und "foo2" sind immer noch der erste bzw. zweite Parameter.

Wenn Sie mehr Flexibilität wünschen, schlage ich vor, dass Sie Ihre gespeicherte Prozedur so schreiben, dass sie Folgendes akzeptiert keine Parameter, sondern verwenden direkt Sitzungsvariablen.

SET @param1 := "foo1", @param2 := "foo2";
CALL stored_procedure();

In Ihrer Prozedur müssen Sie dann auf die Variablen als @param1 , @param2 , usw.

CREATE PROCEDURE stored_procedure()
BEGIN
    SELECT * FROM mytable WHERE col1 = @param1 AND col2 = @param2;
END

Lesen Sie http://dev.mysql.com/doc/refman/5.7/en/user-variables.html

5voto

Pentium10 Punkte 198024

Dies ist formell nicht möglich.

Aber es gibt eine Abhilfe, die helfen kann. Verwenden Sie dies:

CALL prcInsertStuff ( 
@paramName1 := nameValue1 
, @paramValue1 := paramValue1 
);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X