DBMS_OUTPUT內建包用於向訊息緩衝區發送訊息,或者從訊息緩衝區擷取訊息。
DBMS_OUTPUT子程式總覽
子程式 | 說明 |
ENABLE Procedure | 啟用訊息輸出。 |
DISABLE Procedure | 禁用訊息輸出。 |
PUT Procedure | 輸入訊息至緩衝區。 |
PUT_LINE Procedure | 輸出緩衝區中訊息。 |
NEW_LINE Procedure | 輸入分行符號至緩衝區。 |
GET_LINE Procedure | 從緩衝區中擷取一行訊息。 |
GET_LINES Procedure | 從緩衝區中擷取所有行數組。 |
SERVEROUTPUT參數控制訊息的輸出或輸入。
SET SERVEROUTPUT = ON:將訊息輸出到標準輸出中。( PolarDB預設為ON )。SET SERVEROUTPUT = OFF:將把訊息輸入到緩衝區中。
ENABLE Procedure
該預存程序用於允許PUT、PUT_LINE、NEW_LINE和GET_LINE預存程序的調用。
文法
DBMS_OUTPUT.ENABLE(buffer_size IN INTEGER DEFAULT 20000);參數說明
參數 | 說明 |
buffer_size | (選擇性參數)訊息緩衝區的最大長度。以位元組為單位,預設值 20000。 |
樣本
該樣本展示了如何通過DBMS_OUTPUT.ENABLE允許訊息輸出預存程序調用的功能。
-- Hello, PolarDB!
BEGIN
DBMS_OUTPUT.ENABLE;
SET SERVEROUTPUT = ON;
DBMS_OUTPUT.PUT_LINE('Hello, PolarDB!');
END;在SERVEROUTPUT開啟時,無需調用DBMS_OUTPUT.ENABLE( )開啟對PUT、PUT_LINE、NEW_LINE和GET_LINE預存程序的調用。DISABLE Procedure
該預存程序用於清空緩衝區,禁用訊息輸出。可以通過ENABLE或SERVEROUTPUT參數設定重新啟用。
文法
DBMS_OUTPUT.DISABLE();樣本
該樣本展示了如何禁用訊息輸出。
-- NULL
BEGIN
SET SERVEROUTPUT = OFF;
DBMS_OUTPUT.DISABLE;
DBMS_OUTPUT.PUT_LINE('Hello, PolarDB!');
END;PUT Procedure
該預存程序用於輸入訊息至緩衝區。
文法
DBMS_OUTPUT.PUT (item IN VARCHAR2);參數說明
參數 | 說明 |
item | 待輸入到緩衝區的訊息。 |
樣本
該樣本展示了如何輸入部分行訊息到緩衝區。
-- Hello, PolarDB!
BEGIN
DBMS_OUTPUT.PUT('Hello, ');
DBMS_OUTPUT.PUT('PolarDB!');
DBMS_OUTPUT.NEW_LINE;
END;PUT_LINE Procedure
該預存程序用於輸出緩衝區中的訊息。
文法
DBMS_OUTPUT.PUT_LINE(item IN VARCHAR2);參數說明
參數 | 說明 |
item | 待輸出的訊息。 |
樣本
該樣本展示了如何輸出緩衝區的行訊息。
-- Hello, PolarDB!
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, PolarDB!');
END;NEW_LINE Procedure
該預存程序用於向緩衝區中寫入一個“分行符號”。
文法
DBMS_OUTPUT.NEW_LINE();樣本
該樣本展示了如何向緩衝區中寫入一個“分行符號”。
-- Hello, PolarDB!
BEGIN
DBMS_OUTPUT.PUT('Hello, PolarDB!');
DBMS_OUTPUT.NEW_LINE;
END;GET_LINE Procedure
該預存程序用於從緩衝區中檢索一行訊息。
文法
DBMS_OUTPUT.GET_LINE (line OUT VARCHAR2,
status OUT INTEGER);參數說明
參數 | 說明 |
line | 用於從訊息緩衝區接收文本行的變數。 |
status | 如果從訊息緩衝區返回一行文本,返回0。如果沒有文本返回,返回1。 |
樣本
該樣本展示了如何擷取緩衝區中的資料到變數中。
DECLARE
line VARCHAR2;
status INTEGER;
BEGIN
line := '';
set SERVEROUTPUT = OFF;
DBMS_OUTPUT.PUT_LINE('Hello, PolarDB!');
set SERVEROUTPUT = ON;
DBMS_OUTPUT.GET_LINE(line, status);
-- line: Hello, PolarDB! status: 0
DBMS_OUTPUT.PUT_LINE(line || ' ' ||status);
DBMS_OUTPUT.GET_LINE(line, status);
-- status is 1
DBMS_OUTPUT.PUT_LINE(line || ' ' ||status);
END;GET_LINES Procedure
該預存程序用於從緩衝區中檢索行數組。
文法
DBMS_OUTPUT.GET_LINE (lines OUT VARCHAR2[],
numlines INOUT INTEGER);參數說明
參數 | 說明 |
lines | 用於從訊息緩衝區接收文本行的數組。 |
numlines | IN參數表示希望從緩衝區中接收的文本行的數量。 OUT參數返回實際讀取到的文本行的數量。 |
樣本
該樣本展示了如何從緩衝區中檢索行數組。
DECLARE
lines VARCHAR2[];
numline INTEGER;
item VARCHAR2;
BEGIN
numline := 3;
SET SERVEROUTPUT = OFF;
DBMS_OUTPUT.PUT_LINE('Hello');
DBMS_OUTPUT.PUT_LINE('PolarDB');
SET SERVEROUTPUT = ON;
DBMS_OUTPUT.GET_LINES(lines, numline);
-- Hello
-- PolarDB
-- Total lines: 2
FOREACH item in ARRAY lines LOOP
DBMS_OUTPUT.PUT_LINE(item);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Total lines:' || numline);
END;