Demonstração da Package DBMS_TRACE
Aqui estão dois exemplos de uso da PACKAGE DBMS TRACE:
Criação de um package de exemplo para uso na demonstração
Para esta demonstração, criei duas packages abaixo, cada um com duas procedures:
create or replace package pkas_test_dbms_trace_01 is
--
/* Package Constants */
gc_module_name constant varchar(30) := 'pkas_test_dbms_trace_01';
--
procedure procedure_01;
--
procedure procedure_02;
--
end pkas_test_dbms_trace_01;
/
show errors; --
create or replace package body pkas_test_dbms_trace_01 is
--
procedure procedure_01 as
--
x integer;
--
begin
--
dbms_output.put_line('begin');
--
select count(*) into x from tsas_parameters_lookup;
--
if 3 > 2 then
--
select count(*) into x from tsas_reports_role;
--
if 5 > 1 then
--
select count(*) into x from tsas_reports_parameter;
--
if 6 > 10 then
--
null;
--
else
--
select count(*) into x from tsas_payment_calc_scripts;
--
procedure_02();
--
end if;
--
end if;
--
end if;
--
dbms_output.put_line('end');
--
end procedure_01;
--
procedure procedure_02 as
--
x integer;
--
begin
--
select count(*) into x from taas_sis_notes;
--
for x in 1..5 loop
--
dbms_output.put_line('x');
--
end loop;
--
select count(*) into x from tdas_applications_nitrates;
--
pkas_test_dbms_trace_02.procedure_03();
--
end procedure_02;
--
end pkas_test_dbms_trace_01;
/
show errors; --
create or replace package pkas_test_dbms_trace_02 is
--
/* Package Constants */
gc_module_name constant varchar(30) := 'pkas_test_dbms_trace_02';
--
procedure procedure_03;
--
procedure procedure_04;
--
end pkas_test_dbms_trace_02;
/
show errors; --
create or replace package body pkas_test_dbms_trace_02 is
--
procedure procedure_03 as
--
x integer;
--
begin
--
select count(*) into x from twas_acres_general_letter_data;
--
if 1 > 10 then
--
dbms_output.put_line('....');
--
else
--
dbms_output.put_line('....');
--
if 8 > 2 then
--
dbms_output.put_line('....');
--
if 88 > 55 then
--
select count(*) into x from tdas_payment_claim_detail;
--
dbms_output.put_line('....');
--
procedure_04();
--
end if;
--
select count(*) into x from tsas_jurisdiction;
--
end if;
--
end if;
--
end procedure_03;
--
procedure procedure_04 as
--
x integer;
--
begin --
select count(*) into x from tsas_sap_unit_of_measure; --
dbms_output.put_line('teste 01');
dbms_output.put_line('teste 02');
dbms_output.put_line('teste 03'); --
end procedure_04; --
end pkas_test_dbms_trace_02;
Exemplo número 1
Com as packages criadas, vou executar o seguinte código:
Após a execução, vou rodar a seguinte consulta:
Resultado
Como você pode ver, em segundos, tenho um relatório de todas as linhas que foram EXECUTADAS na sequência em que foram EXECUTADAS. Essa é uma função extremamente poderosa para nós, programadores.
Exemplo número 02
Com as packages criadas, vou executar o seguinte código:
Após a execução, vou rodar a seguinte consulta:
Resultado
Como você pode ver, em segundos, tenho um relatório de todos os SQLs que foram EXECUTADOS na sequência em que foram EXECUTADOS.
Conclusão
Frequentemente, os programadores gastam horas tentando entender o caminho que um processo (packages, procedures, functions) percorre quando é executado, como mostrado principalmente no Exemplo número 01. Em segundos, obtemos um relatório linha a linha na ordem em que foram executadas. Essa é uma ferramenta muito útil para desenvolvedores, permitindo-nos ser mais eficientes e produtivos em nosso trabalho.
Este artigo foi escrito originalmente em Inglês e foi traduzido automaticamente utilizando IA.
Obrigado pela dica!
Com certeza sera algo que utilizarei em breve
Muiiiito legal! Parabens pelo artigo da hora!
Obrigado por compartilhar!