Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Registrar saída DBMS_OUTPUT.Put_Line na tabela no Oracle com DBMS_OUTPUT.Get_Lines

Dbms_Output.Put_Line é uma boa maneira de depure o código PLSQL facilmente, obtendo imprimir os valores necessários para rastrear onde as coisas estão dando errado. Mas se você quiser registrar esses dados de impressão em uma tabela para analisá-los a qualquer momento, você pode fazer isso com o procedimento Dbms_Output.Get_Lines.
O exemplo é dado abaixo para registrar valores de impressão Dbms_Output.Put_Line em uma tabela no Oracle. Abaixo está a estrutura da tabela que é usada neste exemplo chamada "outputlog" ou você pode criar sua própria conforme sua necessidade.
CREATE TABLE OUTPUTLOG( CHAR_COL VARCHAR2(1000 BYTE), PROCNAME VARCHAR2(100 BYTE), LOG_DATE DATE);E o seguinte é o exemplo de bloco anônimo PLSQL para registrar a saída:DECLARE n NUMBER :=100; vcol DBMS_OUTPUT.chararr;BEGIN DBMS_OUTPUT.enable (100000); --- faça algo aqui DBMS_OUTPUT.put_line ('first line'); --- faça algo aqui DBMS_OUTPUT.put_line ('second line'); --- faça algo aqui DBMS_OUTPUT.put_line ('terceira linha'); --- obtém a saída no array vcol DBMS_OUTPUT.get_lines (vcol, n); FOR i IN 1 .. n LOOP INSERT INTO outputlog (char_col, procname, log_date) VALUES (vcol (i), 'anonymous', SYSDATE); FIM DO LOOP; COMMIT;END;Observe que estou atribuindo o valor de 100 a n variável e o número de linhas de saída são apenas 3, então ele fará um loop e gravará apenas 3 vezes porque está tendo apenas 3 linhas na saída, mas se o buffer de saída estiver tendo linhas mais de 100 do que registrará apenas 100 linhas, portanto, ajuste o valor dessa variável de acordo.