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

Existe alguma maneira de liberar a saída do PL/SQL no Oracle?


Na verdade. A forma como DBMS_OUTPUT funciona é esta:Seu bloco PL/SQL é executado no servidor de banco de dados sem interação com o cliente. Então, quando você chama PUT_LINE, está apenas colocando esse texto em um buffer na memória do servidor. Quando seu bloco PL/SQL é concluído, o controle é devolvido ao cliente (estou assumindo SQLPlus neste caso); nesse ponto, o cliente obtém o texto do buffer chamando GET_LINE e o exibe.

Portanto, a única maneira de fazer com que a saída apareça no arquivo de log com mais frequência é dividir um grande bloco PL/SQL em vários blocos menores, para que o controle seja devolvido ao cliente com mais frequência. Isso pode não ser prático dependendo do que seu código está fazendo.

Outras alternativas são usar UTL_FILE para gravar em um arquivo de texto, que pode ser liberado sempre que você quiser, ou usar um procedimento de transação autônoma para inserir instruções de depuração em uma tabela de banco de dados e confirmar após cada uma.