DBMS_OUTPUT 模块
DBMS_OUTPUT 模块提供了一组过程,用于将消息(文本行)放到消息缓冲区中以及从消息缓冲区获取消息。当您在应用程序调试期间需要将消息写至标准输出时,这些过程很有用。
此模块的模式为 SYSIBMADM。
DBMS_OUTPUT 模块包括以下内置例程。
| 例程名称 | 描述 |
|---|---|
| DISABLE 过程 | 禁用消息缓冲区。 |
| ENABLE 过程 | 启用消息缓冲区 |
| GET_LINE 过程 | 从消息缓冲区获取文本行。 |
| GET_LINES 过程 | 从消息缓冲区获取一行或多行文本并将文本放到集合中 |
| NEW_LINE 过程 | 将行结束字符序列放到消息缓冲区中。 |
| PUT 过程 | 将未包括行结束字符序列的字符串放到消息缓冲区中。 |
| PUT_LINE 过程 | 将包括一个行结束字符序列的一行放到消息缓冲区中。 |
此模块中的过程允许您使用消息缓冲区。使用命令行处理器 (CLP) 命令 SET SERVEROUTPUT ON 将输出重定向至标准输出。
自治过程内不支持 DISABLE 和 ENABLE 过程。
自主过程是这样的一个过程:被调用时,它在新事务中以独立于原始事务的方式执行。
示例
在 proc1 中,使用 PUT 和 PUT_LINE 过程将一行文本放到消息缓冲区中。 proc1 第一次运行时,会指定 SET SERVEROUTPUT ON,并且消息缓冲区中的该行将显示在 CLP 窗口中。proc1 第二次运行时,会指定 SET SERVEROUTPUT OFF,并且不会在 CLP 窗口中显示来自消息缓冲区的任何行。
CREATE PROCEDURE proc1( P1 VARCHAR(10) )
BEGIN
CALL DBMS_OUTPUT.PUT( 'P1 = ' );
CALL DBMS_OUTPUT.PUT_LINE( P1 );
END@
SET SERVEROUTPUT ON@
CALL proc1( '10' )@
SET SERVEROUTPUT OFF@
CALL proc1( '20' )@
此示例生成以下输出:
CALL proc1( '10' )
Return Status = 0
P1 = 10
SET SERVEROUTPUT OFF
DB20000I The SET SERVEROUTPUT command completed successfully.
CALL proc1( '20' )
Return Status = 0