SQL-серверы, работа с IN/OUT-переменными
Приложение 7.
При работе с 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!