Oracle 如何在触发器内调用无参数存储过程
我正在尝试从触发器调用存储过程Oracle 如何在触发器内调用无参数存储过程,oracle,database-trigger,Oracle,Database Trigger,我正在尝试从触发器调用存储过程 create or replace trigger trg_insert after insert on dbuser_m1 for each row begin InsertData; end; 但要低于埃罗 ORA-04088:执行触发器时出错 ‘OWS_GO_UAT_02.训练插入’ 409100000-“表%s.%s正在变化,触发器/函数可能看不到它” *原因:触发器(或中引用的用户定义的plsql函数) 此语句)试图查看(或修改)已删除的表 在被修
create or replace trigger trg_insert
after insert on dbuser_m1
for each row
begin
InsertData;
end;
但要低于埃罗
ORA-04088:执行触发器时出错
‘OWS_GO_UAT_02.训练插入’
409100000-“表%s.%s正在变化,触发器/函数可能看不到它”
*原因:触发器(或中引用的用户定义的plsql函数)
此语句)试图查看(或修改)已删除的表
在被修改的声明中。
*操作:重写触发器(或函数),使其不读取该表
任何人都可以在这方面帮助我吗?谢谢,除了@KaushikNayak告诉我的之外,在DML(在本例中是插入)处理时,您似乎有一个
从表dbuser\u m1
中选择
我们不知道您在InsertData
中的代码
但我想
不要使用这样的语句select col1,col2到v_col1,v_col2从dbuser_m1代码>,
调用时,您可以将一些带有列值为dbuser_m1
的参数的赋值应用于过程,如InsertData(:old.col1,:old.col2)
,在被调用的过程中,可能会有赋值:
v_col1:=:old.col1;v_col2:=:old.col2代码>
其中v_col1
是类型dbuser_m1.col1%type
和v_col2
是类型dbuser_m1.col2%type
这是调用触发器内存储过程的正确方法吗?它与调用“无参数过程”无关。问题是,无参数过程正在尝试访问同一个表。向我们展示InsertData
的代码,或者让我们知道您试图在其中执行的操作。