我正在编写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
脚本可按预期方式编译和运行,但不会打印到控制台。
您的代码具有误导性。
您在表上不能有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中将其作为脚本运行-