Ola,
Sou novo oracle... alguém poderia me aux. a criar um debug ... tipo toda vez que utilizar uma procedure ou função que atualize ou retorne uma informação ... cria um debug de todo processo que esta sendo feito, já ouvi que da para ser feito através de tela, se alguém tiver um exemplo.
Vlws!
Como criar um Debug em linhas PL/SQL
-
- Rank: Programador Júnior
- Mensagens: 22
- Registrado em: Qui, 26 Jul 2012 8:55 am
" Pense diferente! - "
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother, beleza?
Cara, existem ferramentas que possuem essa opção de Debug (o PL/SQL Developer é "expert" nisso).
Porém, existem algumas formas "manuais" de debug, que a gente conhece:
Essas são algumas que costumamos utilizar.
qualquer coisa, conte com a gente.
Cara, existem ferramentas que possuem essa opção de Debug (o PL/SQL Developer é "expert" nisso).
Porém, existem algumas formas "manuais" de debug, que a gente conhece:
- Colocar mensagens DBMS_OUTPUT.PUT_LINE nos teus objetos (dessa forma você irá receber as mensagens em um bloco anônimo quando executar);
- Criar uma tabela de mensageria e, por um determinado período, preencher essa tabela com as informações que necessita;
Essas são algumas que costumamos utilizar.
qualquer coisa, conte com a gente.
- stcoutinho
- Moderador
- Mensagens: 850
- Registrado em: Qua, 11 Mai 2011 5:15 pm
- Localização: são Paulo - SP
Carlos,
Bem vindo ao forum GLUFKE,
Existem várias formas de você implementar uma rotina de debug em seu código PL/SQL:
- Criar uma tabela de LOG e inserir registros na mesma conforme seu código PL/SQL é executado;
- Adcionar o pacote DBMS_OUTPUT (metodo PUT_LINE) em seu código PL/SQL (mas este comando pode apresentar
um limite máximo de mensagens geradas);
- Usar o pacote DBMS_APPLICATION_INFO em seu código PL/SQL;
No meu caso, eu gosto de usar a primeira e a ultima opção. E neste tópico vou descrever a útima.
Existe o pacote da ORACLE chamado DBMS_APPLICATION_INFO. Com ele você pode atualizar o valor de algumas colunas (MODULE,ACTION,CLIENT_INFO) da visão V$SESSION, permitindo em tempo real verificar o que o seu código PL/SQL está executando.
Execute pausadamente os seguintes comandos em uma sessão SQL*PLus (preferencialmente para o exemplo, use o SQL*PLus):
Note que as colunas MODULE e ACTION da V$SESSION para a sua sessão corrente foram atualizadas pela DBMS_APPLICATION_INFO.
Você pode utilizar este pacote para rotinas de execução longa:
Espero ter conseguido lhe passar um exemplo que o ajude em sua codificação.
Abraços,
Sergio Coutinho
Bem vindo ao forum GLUFKE,
Existem várias formas de você implementar uma rotina de debug em seu código PL/SQL:
- Criar uma tabela de LOG e inserir registros na mesma conforme seu código PL/SQL é executado;
- Adcionar o pacote DBMS_OUTPUT (metodo PUT_LINE) em seu código PL/SQL (mas este comando pode apresentar
um limite máximo de mensagens geradas);
- Usar o pacote DBMS_APPLICATION_INFO em seu código PL/SQL;
No meu caso, eu gosto de usar a primeira e a ultima opção. E neste tópico vou descrever a útima.
Existe o pacote da ORACLE chamado DBMS_APPLICATION_INFO. Com ele você pode atualizar o valor de algumas colunas (MODULE,ACTION,CLIENT_INFO) da visão V$SESSION, permitindo em tempo real verificar o que o seu código PL/SQL está executando.
Execute pausadamente os seguintes comandos em uma sessão SQL*PLus (preferencialmente para o exemplo, use o SQL*PLus):
SQL> SELECT MODULE,ACTION FROM V$SESSION WHERE audsid=userenv('sessionid');
SQL> EXEC DBMS_APPLICATION_INFO.SET_MODULE('SP_XPTO_PRODECURE','Executando');
SQL> SELECT MODULE,ACTION FROM V$SESSION WHERE audsid=userenv('sessionid');
SQL> EXEC DBMS_APPLICATION_INFO.SET_MODULE('','');
SQL> SELECT MODULE,ACTION FROM V$SESSION WHERE audsid=userenv('sessionid');
Você pode utilizar este pacote para rotinas de execução longa:
CREATE OR REPLACE PROCEDURE SP_XPTO_PROCEDURE
IS
WTOTAL NUMBER :=0;
....
BEGIN
DBMS_APPLICATION_INFO.SET_MODULE('SP_XPTO_PRODECURE','Iniciando');
....
FOR ... LOOP
WTOTAL := WTOTAL+1;
DBMS_APPLICATION_INFO.SET_MODULE('SP_XPTO_PRODECURE','Proces.Elemento '||WTOTAL);
...
END LOOP;
..
DBMS_APPLICATION_INFO.SET_MODULE('','');
EXCEPTIONS
WHEN OTHERS THEN
DBMS_APPLICATION_INFO.SET_MODULE('','');
RAISE_APPLICATION_ERROR(....
END SP_XPTO_PROCEDURE;
Abraços,
Sergio Coutinho
-
- Rank: DBA Sênior
- Mensagens: 317
- Registrado em: Seg, 16 Nov 2009 4:50 pm
- Localização: São Paulo - SP
Particularmente eu prefiro criar uma tabela para registro de log, mas aqui onde eu trabalho além de nós utilizarmos o DBMS_OUTPUT para testes no ambiente de desenvolvimento a existem os objetos em produção que utilizam a geração de arquivos com as informações necessárias.
Fica a sugestão.
Abç.,
Fica a sugestão.
Abç.,
-
- Rank: Programador Júnior
- Mensagens: 22
- Registrado em: Qui, 26 Jul 2012 8:55 am
" Pense diferente! - "
Valeu Pessoal!!! Irei fazer alguns teste com todos, e verei qual o melhor para o meu caso.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 14 visitantes