GET_LINE 过程 - 从消息缓冲区获取行
GET_LINE 过程从消息缓冲区获取文本行。该文本必须以行结束字符序列终止。
提示: 要将行结束字符序列添加至消息缓冲区,请使用 PUT_LINE
过程,或者在对 PUT 过程进行一系列调用后使用 NEW_LINE 过程。
语法
过程参数
- line
- 类型为 VARCHAR(32672) 的输出自变量,用于从消息缓冲区返回文本行。
- status
- 类型为 INTEGER 的输出自变量,用于指示是否从消息缓冲区返回了行:
- 0 指示已返回行
- 1 指示未返回行
权限
对 DBMS_OUTPUT 模块的 EXECUTE 特权。
示例
使用 GET_LINE 过程从消息缓冲区获取文本行。在此示例中,proc1 将一行文本放到消息缓冲区中。proc3 从消息缓冲区获取文本并将其插入到表 messages 中。然后会运行 proc2,但因为已禁用消息缓冲区,所以不会向消息缓冲区添加任何文本。SELECT 语句运行时,它仅返回 proc1 添加的文本。
CALL DBMS_OUTPUT.ENABLE( NULL )@
CREATE PROCEDURE proc1()
BEGIN
CALL DBMS_OUTPUT.PUT_LINE( 'PROC1 put this line in the message buffer.' );
END@
CREATE PROCEDURE proc2()
BEGIN
CALL DBMS_OUTPUT.PUT_LINE( 'PROC2 put this line in the message buffer.' );
END@
CREATE TABLE messages ( msg VARCHAR(100) )@
CREATE PROCEDURE proc3()
BEGIN
DECLARE line VARCHAR(32672);
DECLARE status INT;
CALL DBMS_OUTPUT.GET_LINE( line, status );
while status = 0 do
INSERT INTO messages VALUES ( line );
CALL DBMS_OUTPUT.GET_LINE( line, status );
end while;
END@
CALL proc1@
CALL proc3@
CALL DBMS_OUTPUT.DISABLE@
CALL proc2@
CALL proc3@
SELECT * FROM messages@
此示例生成以下输出:MSG
----------------------------------------------
PROC1 put this line in the message buffer.
1 record(s) selected.
