全部產品
Search
文件中心

PolarDB:DBMS_OUTPUT

更新時間:Jul 06, 2024

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;