DBMS_OUTPUT 模块

DBMS_OUTPUT 模块提供了一组过程,用于将消息(文本行)放到消息缓冲区中以及从消息缓冲区获取消息。当您在应用程序调试期间需要将消息写至标准输出时,这些过程很有用。

此模块的模式为 SYSIBMADM。

DBMS_OUTPUT 模块包括以下内置例程。

表 1. 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