寫了一個fuction 是用table_A 其中的x1是table_A的唯一索引當引數,其作用是回傳一個類別的代碼,fuction中也用了table_A
我執行 select * from table_A a where fuction (a.x1)='1' ;
這樣是能查找到資料的,而
update table_A a set a.x2='8888' where fuction (a.x1)='1' ;
卻更新不到資料,提示0行被更新,
update table_B b set b.x2='8888' where fuction (b.x1)='1' ;
卻是能正常更新的
小弟想問下,這是oracle的限制么,fuction中涉及到的表不能被更新
uj5u.com熱心網友回復:
自我終結fuction中例外被catch了,去掉例外捕獲 會報ORA_04091的錯
程式中加入 pragma autonomous_transaction;
自治事務宣告 ,ok解決了
uj5u.com熱心網友回復:
fuction中也用了table_A ,update 的表恰好也是 table_A實際上, oracle 在做 DML 時,不能做查詢操作,這個在觸發器中非常容易遇到。
樓主不妨也 這個函式的文本貼出來,大家幫你看一下。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/16350.html
標籤:開發
