【问题标题】:Why does my SQL trigger statement not appear in DBMS_OUTPUT?为什么我的 SQL 触发器语句没有出现在 DBMS_OUTPUT 中?
【发布时间】:2016-06-16 22:47:39
【问题描述】:

我正试图了解触发器,但我遇到了错误

错误(2,4): PL/SQL: SQL 语句被忽略

错误(2,8):PL/SQL:ORA-00922:缺少或无效选项

创建以下触发器时:

CREATE TRIGGER TableTrigger
AFTER UPDATE ON TestTable
FOR EACH ROW
BEGIN
  set serveroutput on format wrapped;
  DBMS_OUTPUT.put_line('TABLE UPDATED!');
END;

适用于下表:

CREATE TABLE TestTable
(
test1 INT,
test2 INT,
test3 INT,
PRIMARY KEY (test1)
);

我不知道该怎么办,有人有什么建议吗?

【问题讨论】:

  • 将服务器输出设置为包装格式;是 SQL*Plus 命令,与触发器无关。删除它。
  • @Motor 谢谢,我摆脱了它。错误现在消失了,但在更新表时,消息“表已更新!”仍然没有出现。我已经为连接启用了 DBMS_OUTPUT。
  • 您使用的是 SQLPlus 吗?如果你写的是“在格式包装上设置服务器输出;”在更新语句之前的 SQLPlus 中。我已经对其进行了测试并且正在工作。
  • 你是如何启用它的,你在哪里寻找输出出现?
  • @Motor,这行得通,感谢您的帮助。我对 SQL 很陌生,对我来说很难理解到底发生了什么。

标签: sql oracle triggers


【解决方案1】:

在触发器中使用 DBMS_OUTPUT 并不是最佳实践。如果您想查看已完成某项操作,请创建一个日志记录表或一个审计历史记录表,或者为该表设置更新审计。

当您从 SQLPlus 或其他 IDE 运行 PL/SQL 过程或包时,DBMS_OUTPUT 很有用。

不同版本的 SQL 可能会或可能不会向您显示触发器的缓冲区输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    相关资源
    最近更新 更多