Get name procedure de uma package

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
drelucas
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Qui, 09 Jun 2016 1:58 pm

gostaria de pedir uma ajuda..

estou precisando pegar o nome da procedure que for chamada..

como o exemplo abaixo..

toda vez q entrar na proc1, jogar na tela "proc1"

tem alguma função que retorna o nome da procedure / função que a package chama? pesquisei mas não encontrei..

encontrei sobre o ($$plsql_unit, $$plsql_line);

mas ele imprime somente o nome da package

encontrei tambem o owa_util.get_procedure

mas ele apresenta erro (ora-06502) se tento rodar devido não ser um ambiente cgi (pelo q encontrei na net)
​​

Selecionar tudo

create or replace package body pkg
as

   procedure proc1 is
   begin
      dbms_output.put_line ('proc1'); 
      end proc1 ;
end pkg;
/
​​
se puderem me dar uma ajuda eu agradeço
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Olá Drelucas,

Talvez exista alguma função específica sobre este tema, mas talvez você consiga resolver este "problema" usando o DBMS_APPLICATION_INFO.

Na V$SESSION, você possui algumas colunas que você pode atualizar com valores (MODULE, ACTION, CLIENT_INFO).

Eu costumo usar elas para debuggar o meu código PL/SQL em tempo real, sem impacto na aplicação.

Mas voltando à sua pergunta, você poderia chamar a DBMS_APPLICATION_INFO no inicio da sua procedure, de forma a carimbar o nome dela na coluna MODULE, ACTION ou CLIENT_INFO da V$SESSION. Lembre-se que depois de executar/sair da procedure (ou chamar outra), você precisa limpar o conteúdo destes campos para "não ficar sujeira" (modo de falar).

Para obter o conteúdo deste campo na sua sessão corrente, você poderia executar uma querie como esta : select MODULE,ACTION,CLIENT_INFO from V$session where audsid = userenv('sessionid');

Espero ter ajudado. Se encontrar outra solução, não se esqueça de postar aqui.

Sergio
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes