Хранимые процедуры MySQL не поддерживают именованные параметры в любом порядке. Запрос функции был сделан в прошлом, например:
Как вы обнаружили, обходной путь использования выражений для установки переменных сеанса не имеет ничего общего с порядком параметров. Другими словами, вы можете сделать следующее:
CALL stored_procedure(@param1 := "foo1", @param2 := "foo2");
Но значения "foo1" и "foo2" по-прежнему являются первым и вторым параметрами, соответственно.
Если вам нужна большая гибкость, я предлагаю написать хранимую процедуру для принятия нет параметров, но использовать переменные сеанса напрямую.
SET @param1 := "foo1", @param2 := "foo2";
CALL stored_procedure();
В вашей процедуре вы должны ссылаться на переменные как @param1
, @param2
и т. Д.
CREATE PROCEDURE stored_procedure()
BEGIN
SELECT * FROM mytable WHERE col1 = @param1 AND col2 = @param2;
END
Чтение http://dev.mysql.com/doc/refman/5.7/en/user-variables.html