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