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. Oracle में NULLIF () फ़ंक्शन

  2. तालिका नाम के चारों ओर उद्धरण चिह्न वास्तव में क्या करते हैं?

  3. ओरेकल एसक्यूएल में गतिशील धुरी - प्रक्रिया

  4. ट्रिगर के अंदर अपवाद कैसे बढ़ाएं? क्या इसे करने का कोई तरीका है?

  5. अनुवाद संख्या को हार्डकोड किए बिना इतालवी मुद्रा में वर्तनी संख्या (मुद्रा) के लिए Plsql