PL/SQL 不打印到控制台(在 SQLDeveloper 中)
Posted
技术标签:
【中文标题】PL/SQL 不打印到控制台(在 SQLDeveloper 中)【英文标题】:PL/SQL does not print to console (in 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
脚本按预期编译和工作,但不打印到控制台。
【问题讨论】:
打开服务器输出并运行插入语句。 正如我在描述中提到的,它已打开。插入工作正常,但它不会打印到控制台。 准确地分享你在做什么是非常重要的。请参阅下面的答案。 【参考方案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...以上是关于PL/SQL 不打印到控制台(在 SQLDeveloper 中)的主要内容,如果未能解决你的问题,请参考以下文章