Acerca da Criação da Ligação e das Funções de fecho

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.