Именованные параметры для хранимых процедур в MySQL - PullRequest
2 голосов
/ 22 ноября 2010

Могу ли я использовать именованные параметры для хранимых процедур в MySQL?Мне нужно вызвать хранимые процедуры примерно так:

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

Ответ

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

Спасибо за Pentium10.

Ответы [ 2 ]

5 голосов
/ 26 декабря 2016

Хранимые процедуры 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

5 голосов
/ 22 ноября 2010

Формально это невозможно.

Но есть обходной путь, который может помочь. Используйте это:

CALL prcInsertStuff ( 
@paramName1 := nameValue1 
, @paramValue1 := paramValue1 
); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...