簡體   English   中英

如何在觸發器內部調用無參數存儲過程

[英]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%typev_col2的類型為dbuser_m1.col2%type

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM