Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để chuyển hướng đầu ra của DBMS_OUTPUT.PUT_LINE thành một tệp?

DBMS_OUTPUT không phải là công cụ tốt nhất để gỡ lỗi, vì hầu hết các môi trường không sử dụng nó nguyên bản. Nếu bạn muốn nắm bắt đầu ra của DBMS_OUTPUT tuy nhiên, bạn chỉ cần sử dụng DBMS_OUTPUT.get_line thủ tục.

Đây là một ví dụ nhỏ:

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. Sql tĩnh so với động

  2. Câu chuyện về hai yếu tố phân nhóm

  3. Tìm phiên bản / bản vá của máy chủ weblogic trong EBS R12.2 / Weblogic độc lập

  4. Hàm TRANSLATE (… USING) trong Oracle

  5. sử dụng hàm rownum với> đăng nhập oracle