PL/SQL - DBMS 輸出



在本章中,我們將討論 PL/SQL 中的 DBMS 輸出。DBMS_OUTPUT 是一個內建包,它允許您顯示輸出、除錯資訊以及從 PL/SQL 塊、子程式、包和觸發器傳送訊息。在整個教程中,我們已經使用了此包。

讓我們來看一段小程式段,它將顯示資料庫中的所有使用者表。請在您的資料庫中嘗試它以列出所有表名:

BEGIN 
   dbms_output.put_line  (user || ' Tables in the database:'); 
   FOR t IN (SELECT table_name FROM user_tables) 
   LOOP 
      dbms_output.put_line(t.table_name); 
   END LOOP; 
END; 
/ 

DBMS_OUTPUT 子程式

DBMS_OUTPUT 包具有以下子程式:

序號 子程式及用途
1

DBMS_OUTPUT.DISABLE;

停用訊息輸出。

2

DBMS_OUTPUT.ENABLE(buffer_size IN INTEGER DEFAULT 20000);

啟用訊息輸出。buffer_size 的 NULL 值表示無限緩衝區大小。

3

DBMS_OUTPUT.GET_LINE (line OUT VARCHAR2, status OUT INTEGER);

檢索緩衝資訊的單行。

4

DBMS_OUTPUT.GET_LINES (lines OUT CHARARR, numlines IN OUT INTEGER);

從緩衝區檢索一系列行。

5

DBMS_OUTPUT.NEW_LINE;

放置換行符。

6

DBMS_OUTPUT.PUT(item IN VARCHAR2);

將部分行放入緩衝區。

7

DBMS_OUTPUT.PUT_LINE(item IN VARCHAR2);

將一行放入緩衝區。

示例

DECLARE 
   lines dbms_output.chararr; 
   num_lines number; 
BEGIN 
   -- enable the buffer with default size 20000 
   dbms_output.enable; 
   
   dbms_output.put_line('Hello Reader!'); 
   dbms_output.put_line('Hope you have enjoyed the tutorials!'); 
   dbms_output.put_line('Have a great time exploring pl/sql!'); 
  
   num_lines := 3; 
  
   dbms_output.get_lines(lines, num_lines); 
  
   FOR i IN 1..num_lines LOOP 
      dbms_output.put_line(lines(i)); 
   END LOOP; 
END; 
/  

當以上程式碼在 SQL 提示符下執行時,會產生以下結果:

Hello Reader! 
Hope you have enjoyed the tutorials! 
Have a great time exploring pl/sql!  

PL/SQL procedure successfully completed.
廣告