Sql 在oracle中使用serveroutput后,未在终端中打印消息

Sql 在oracle中使用serveroutput后,未在终端中打印消息,sql,oracle,triggers,sqlplus,Sql,Oracle,Triggers,Sqlplus,我已经实现了以下触发器。触发器被触发,但输出不显示。在创建触发器后,我已检查了启用serveroutput(将serveroutput设置为打开)的时间。我在SQLPLUS中做这个,我还没有下载oracle 使用exit命令后,“再见”行将不会打印 CREATE OR REPLACE TRIGGER log_off BEFORE LOGOFF ON SCHEMA when (user=USER) BEGIN --DBMS_OUTPUT.ENABLE (buffer_size => NULL

我已经实现了以下触发器。触发器被触发,但输出不显示。在创建触发器后,我已检查了启用serveroutput(将serveroutput设置为打开)的时间。我在SQLPLUS中做这个,我还没有下载oracle

使用exit命令后,“再见”行将不会打印

CREATE OR REPLACE TRIGGER log_off
BEFORE LOGOFF ON SCHEMA when (user=USER)
BEGIN
--DBMS_OUTPUT.ENABLE (buffer_size => NULL);

dbms_output.put_line('Bye bye');
END;
/     

请帮我一下,谢谢。

首先,您需要阅读以下内容:

关于DBMS\u输出的Oracle文档

此包中的PUT过程和PUT_行过程使您能够 将信息放入可由另一个触发器读取的缓冲区, 程序或包。在单独的PL/SQL过程中或匿名 块,可以通过调用 获取线过程和获取线过程


SQL*Plus和所有其他开发工具都隐式地调用
dbms\u输出。执行任何代码段后,获取行
,这就是为什么您可以在屏幕上看到输出。此外,只有在代码完成执行之后,在您的情况下,在触发器执行之后,以及因此在注销之后,才可以调用
dbms\u output.get\u line
。但注销后,您无法执行任何操作-会话已关闭。所以,你永远不会看到这最后的再见。相反,您可以创建日志表并在其中插入“再见”。

谢谢您的帮助。