Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да пренасоча изхода на DBMS_OUTPUT.PUT_LINE към файл?

DBMS_OUTPUT не е най-добрият инструмент за отстраняване на грешки, тъй като повечето среди не го използват първоначално. Ако искате да заснемете изхода на DBMS_OUTPUT вие обаче просто ще използвате DBMS_OUTPUT.get_line процедура.

Ето един малък пример:

SQL> create directory tmp as '/tmp/';

Directory created

SQL> CREATE OR REPLACE PROCEDURE write_log AS
  2     l_line VARCHAR2(255);
  3     l_done NUMBER;
  4     l_file utl_file.file_type;
  5  BEGIN
  6     l_file := utl_file.fopen('TMP', 'foo.log', 'A');
  7     LOOP
  8        EXIT WHEN l_done = 1;
  9        dbms_output.get_line(l_line, l_done);
 10        utl_file.put_line(l_file, l_line);
 11     END LOOP;
 12     utl_file.fflush(l_file);
 13     utl_file.fclose(l_file);
 14  END write_log;
 15  /

Procedure created

SQL> BEGIN
  2     dbms_output.enable(100000);
  3     -- write something to DBMS_OUTPUT
  4     dbms_output.put_line('this is a test');
  5     -- write the content of the buffer to a file
  6     write_log;
  7  END;
  8  /

PL/SQL procedure successfully completed

SQL> host cat /tmp/foo.log

this is a test


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trunc поле за дата в mysql като Oracle

  2. ORA-04091:таблицата [blah] мутира, тригерът/функцията може да не я види

  3. Oracle:как да UPSERT (актуализация или вмъкване в таблица?)

  4. Как да покажа размера на схемата на Oracle със SQL заявка?

  5. RANK, DENSE_RANK и ROW_NUMBER функции в Oracle