О функциях создания и закрытия подключения

Для 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 указывает вид активности: вход или выход. Если вызвать эту функцию как Функцию заключительной обработки, будут возвращены результаты, показанные в таблице.