Для Publisher можно задать функции PL/SQL, которые будут выполняться при создании подключения к источнику данных JDBC (функция предварительной обработки) или закрытии подключения (функция заключительной обработки).
Функция должна возвращать логическое значение. Эта функция поддерживается только для баз данных Oracle.
В этих двух полях администратор может задать атрибуты пользовательского контекста, прежде чем будет установлено подключение к базе данных. Когда механизм извлечения закроет подключение, эти атрибуты будут удалены.
Системную переменную :xdo_user_name можно использовать в качестве переменной привязки для передачи имени пользователя в вызовы функции PL/SQL. Заданный таким образом пользовательский контекст позволяет защитить данные на уровне источника (а не на уровне запроса SQL).
Например, предположим, что используется указанная ниже функция выборки.
FUNCTION set_per_process_username (username_in IN VARCHAR2) RETURN BOOLEAN IS BEGIN SETUSERCONTEXT(username_in); return TRUE; END set_per_process_username
Чтобы вызывать эту функцию при каждом подключении к базе данных, введите следующее значение в поле Функция предварительной обработки: set_per_process_username(:xdo_user_name)
Еще один пример использования – вставка строки в таблицу LOGTAB при каждом подключении и отключении пользователя:
CREATE OR REPLACE FUNCTION BIP_LOG (user_name_in IN VARCHAR2, smode IN VARCHAR2) RETURN BOOLEAN AS BEGIN INSERT INTO LOGTAB VALUES(user_name_in, sysdate,smode); RETURN true; END BIP_LOG;
В поле Функция предварительной обработки введите значение BIP_LOG(:xdo_user_name)
При установлении нового подключения к базе данных в таблице LOGTAB появляется соответствующая запись. Значение SMODE указывает вид активности: вход или выход. Если вызвать эту функцию как Функцию заключительной обработки, будут возвращены результаты, показанные в таблице.