Pode definir funções de PL/SQL para o Publisher executar quando uma ligação a uma origem de dados de JDBC é criada (função de pré-processamento) ou fechada (função de pós-processamento).
A função deve devolver um valor Booleano. Esta funcionalidade só é suportada para bases de dados Oracle.
Estes dois campos permitem ao administrador definir os atributos do contexto de um utilizador antes de ser estabelecida uma ligação a uma base de dados e, depois, dispensar os atributos após a interrupção da ligação pelo mecanismo de extração.
A variável do sistema :xdo_user_name pode ser utilizada como uma variável de associação para transmitir o nome de utilizador de entrada em sessão às chamadas da função de PL/SQL. Este método de definição do contexto do utilizador de entrada em sessão permite-lhe proteger os dados ao nível da origem de dados (em vez que o fazer ao nível da consulta de SQL).
Por exemplo, com base na seguinte função de exemplo:
FUNCTION set_per_process_username (username_in IN VARCHAR2) RETURN BOOLEAN IS BEGIN SETUSERCONTEXT(username_in); return TRUE; END set_per_process_username
Para chamar esta função sempre que é estabelecida uma ligação à base de dados, introduza o seguinte no campo Função de Pré-processamento: set_per_process_username(:xdo_user_name)
Um outro exemplo de utilização seria inserir uma linha na tabela LOGTAB sempre que um utilizador liga ou desliga:
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;
No campo Função de Pré-processamento introduza: BIP_LOG(:xdo_user_name)
Quando é estabelecida uma nova ligação à base de dados, a mesma será registada na tabela LOGTAB. O valor SMODE especifica a atividade como uma entrada ou uma saída. Se esta função for chamada como uma Função de Pós-processamento também, serão devolvidos resultados como os apresentados na tabela abaixo.