DBMS_OUTPUT 系统包使您能够从存储过程、包和触发器中发送消息。

该系统包通常用于调试,显示 PL 调试信息。

使用 DBMS_OUTPUT 系统包的 PUT 和 PUT_LINE 存储过程可以将信息放在一个缓冲区中,方便其他触发器、程序或包读取。在单独的 PL 子程序或匿名块中,可以通过调用 GET_LINE 来显示缓冲信息。

如果包被禁用,则忽略对子程序的所有调用。通过这种方式,您可以设计应用程序,使子程序仅在客户端处理信息时可用。

DBMS_OUTPUT 安全模型

dbms_output.sqldbms_output_body.sql 数据库脚本必须以 SYS 用户的身份运行,用于创建 DBMS_OUTPUT,并将此包的执行权限设为 public

DBMS_OUTPUT 使用说明

  • 如果您不调用 GET_LINE,缓冲消息将被忽略。

  • 通常应该避免让应用程序代码调用 DISABLE 或 ENABLE 存储过程,因为可能会影响外部工具控制显示输出。

注意

直到子程序或者触发器执行完成,子程序中通过 DBMS_OUTPUT 输出的信息才会开始发送。没有机制可以将 DBMS_OUTPUT 输出的信息实时发送给客户端。

DBMS_OUTPUT 子程序概览

下表列出了 OceanBase 数据库当前版本所支持的 DBMS_OUTPUT 子程序以及简要描述。

子程序

描述

DISABLE

禁用消息输出。

ENABLE

开启消息输出。

GET_LINE

从缓冲区中检索一行。

NEW_LINE

终止用 PUT 创建的行。

PUT

在缓冲区中放置部分行。

PUT_LINE

将行放入缓冲区。