Приложение 7. SQL сервера, работа с IN/OUT переменными [3.1.4]
При работе с SQL сервером Oracle поддерживается работа со связанными переменными (bind variables), поддерживаются IN, OUT и IN/OUT переменные, которые связываются с передаваемым в запрос хешем.
При прямом использовании конструкций CALLиEXECUTE в некоторых версиях Oracle имеются известные проблемы, рекомендуем пользоваться PL/SQL оберткой (begin …; end;), не забывайте экранировать знак «;».
Примечание: значение типа void соответствует NULL. Во втором примере days имеет начальное значение NULL.
Пример использования IN переменных
#procedure ban_user(user_id in number, days in number)
^void:sql{begin ban_user(:user_id, :days)^; end^;}[
$.bind[
$.user_id(7319)
$.days(10)
]
]
Пример использования IN и OUT переменных
#procedure read_user_ban_days(user_id in number, days out number)
$variables[
$.user_id(7319)
#несмотря на то, что параметр OUT, все равно необходимо его передать
#его текущее значение будет проигнорировано
$.days[]
]
^void:sql{begin read_user_ban_days(:user_id, :days)^; end^;}[
$.bind[$variables]
]
Пользователь выключен на $variables.days!