Entendendo a DBMS_OUTPUT no Oracle PL/SQL
Introdução
A DBMS_OUTPUT
é um pacote integrado fornecido pela Oracle que permite aos desenvolvedores exibir informações, debugar ou capturar saídas dentro de um programa PL/SQL. Embora não seja a única forma de obter feedback durante a execução de procedimentos e funções, é, sem dúvida, uma das mais usadas, principalmente porque é simples de implementar e usar.
Ativação
Para começar a usar a DBMS_OUTPUT
, é necessário habilitar a saída do servidor. Isso pode ser feito no ambiente SQL*Plus com o comando:
SQL> SET SERVEROUTPUT ON;
Em ambientes de desenvolvimento como o Oracle SQL Developer, essa opção pode ser habilitada através da interface gráfica.
Sintaxe Básica
O pacote DBMS_OUTPUT
oferece diversas subprogramas (procedimentos e funções), mas os mais comumente usados são:
DBMS_OUTPUT.PUT
Este procedimento coloca uma string na fila de buffer sem um caractere de nova linha.
Exemplo
BEGIN
DBMS_OUTPUT.PUT('Olá, ');
DBMS_OUTPUT.PUT('Mundo!');
END;
/
Olá, Mundo!PL/SQL procedure successfully completed.
DBMS_OUTPUT.PUT_LINE
Este procedimento coloca uma string na fila de buffer com um caractere de nova linha.
Exemplo
BEGIN
DBMS_OUTPUT.PUT_LINE('Olá, Mundo!');
END;
/
Olá, Mundo!
PL/SQL procedure successfully completed.
DBMS_OUTPUT.NEW_LINE
Coloca um caractere de nova linha na fila de buffer.
Exemplo
BEGIN
DBMS_OUTPUT.PUT('Olá, ');
DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT('Mundo!');
END;
/
Olá,
Mundo!PL/SQL procedure successfully completed.
DBMS_OUTPUT.GET_LINE
Recupera uma linha do buffer.
Exemplo
DECLARE
linha VARCHAR2(255);
status INTEGER;
BEGIN
DBMS_OUTPUT.GET_LINE (linha, status);
DBMS_OUTPUT.PUT_LINE('Status: ' || status || ', Linha: ' || linha);
END;
/
Status: 0, Linha:
PL/SQL procedure successfully completed.
DBMS_OUTPUT.GET_LINES
Recupera várias linhas do buffer.
Exemplo
DECLARE
linhas DBMS_OUTPUT.chararr;
num_linhas NUMBER := 10;
BEGIN
DBMS_OUTPUT.GET_LINES (linhas, num_linhas);
-- Fazer algo com as linhas aqui
END;
/
PL/SQL procedure successfully completed.
DBMS_OUTPUT.ENABLE
Habilita a fila de buffer.
Exemplo
BEGIN
DBMS_OUTPUT.ENABLE(buffer_size => 1000000);
DBMS_OUTPUT.PUT_LINE('Buffer habilitado com tamanho de 1MB');
END;
/
Buffer habilitado com tamanho de 1MB
PL/SQL procedure successfully completed.
DBMS_OUTPUT.DISABLE
Desabilita a fila de buffer.
Exemplo
BEGIN
DBMS_OUTPUT.DISABLE;
DBMS_OUTPUT.PUT_LINE('Isso não será exibido');
END;
/
PL/SQL procedure successfully completed.
Buffer de Saída
O DBMS_OUTPUT
tem um buffer para armazenar as saídas. A capacidade padrão do buffer é de 20000 bytes, mas você pode definir o tamanho do buffer usando DBMS_OUTPUT.ENABLE
.
Conclusão
A DBMS_OUTPUT
é uma ferramenta poderosa para debugar e entender o que está acontecendo dentro dos seus programas PL/SQL. Com uma sintaxe simples e direta, ela permite que você capture informações importantes para garantir que seu código esteja funcionando como esperado.
Abs