【问题标题】:PL/SQL does not print to console (in SQLDeveloper)PL/SQL 不打印到控制台(在 SQLDeveloper 中)
【发布时间】:2019-10-26 13:25:56
【问题描述】:

我正在编写 PL/SQL 触发器(INSTEAD OF 类型)。我正在尝试在触发器中打印到控制台,但它不可见。

脚本如下所示:

SET SERVEROUTPUT ON;

CREATE OR REPLACE TRIGGER MYTRIGG
INSTEAD OF INSERT ON MYTABLE 
FOR EACH ROW
DECLARE
    --My varables...
BEGIN
    --Some statements

    DBMS_OUTPUT.PUT_LINE('Error! Deptno does not exist!');

    --Rest of script
END;

我一直在搜索堆栈,但没有任何效果。 我已经 SET SERVEROUTPUT ON 并且我还尝试打开 View -> Dbms Output

脚本按预期编译和工作,但不打印到控制台。

【问题讨论】:

  • 打开服务器输出并运行插入语句。
  • 正如我在描述中提到的,它已打开。插入工作正常,但它不会打印到控制台。
  • 准确地分享你在做什么是非常重要的。请参阅下面的答案。

标签: oracle oracle-sqldeveloper


【解决方案1】:

您的代码具有误导性。

您不能在表上使用 INSTEAD OF 触发器。

这是一些工作代码。

drop table mytable;
drop view mytable_view;
create table mytable (a integer);
create view mytable_view as select * from mytable;

SET SERVEROUTPUT ON;

CREATE OR REPLACE TRIGGER MYTRIGG
INSTEAD OF INSERT ON MYTABLE_view 
FOR EACH ROW
DECLARE
x integer;

BEGIN
    --Some statements

    DBMS_OUTPUT.PUT_LINE('Error! Deptno does not exist!');


    --Rest of script
END;
/

insert into mytable_view values (1);

commit;

如果我在 SQL Developer 中将其作为脚本运行 -

【讨论】:

  • 谢谢!有用。你说得对,我不是在桌子上做的,而是在视图上做的。当我将它作为脚本运行时它可以工作,而不是单独运行。
  • @DamDev 我们假设您知道使用异常将消息传递给您的应用程序/用户,而不是 dbms_output...
猜你喜欢
  • 2010-12-16
  • 2012-02-07
  • 2015-05-04
  • 2016-11-19
  • 2018-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多