[英]How to call no argument stored procedure inside Trigger
我正在嘗試從觸發器調用存儲過程
create or replace trigger trg_insert
after insert on dbuser_m1
for each row
begin
InsertData;
end;
但低於錯誤
ORA-04088:執行觸發器'OWS_GO_UAT_02.TRG_INSERT'04091時出錯。00000-“表%s。%s正在變異,觸發器/函數可能看不到它” *原因:觸發器(或用戶定義的plsql函數在此語句中引用的語句)試圖查看(或修改)一個表,該表正被觸發它的語句修改。 *操作:重寫觸發器(或函數),使其不讀取該表。
有人可以幫我嗎?謝謝,
除了@KaushikNayak告訴的內容外,似乎您正在從表dbuser_m1
進行select
,而該表正在由DML處理(在這種情況下為insert
)。
我們不知道您在InsertData
的代碼,
但是我想
而不是使用這樣的語句select col1, col2 into v_col1, v_col2 from 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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.