存儲過程的commit
Ⅰ oracle 存儲過程需要commit嗎
存儲過程裡面的DML語句比如insert,update是需要commit的
Ⅱ 一個存儲過程中更新多個表可以用一個COMMIT嗎
技術上是可以的,原則建議。
一般情況下事務有原子性,如果要一起執行的語句放在事務中提交,達到這些語句的「同步」,要不都不執行,要不都執行。顯然,這里是可以放在一起的讓其執行的。
但語句中很明顯涉及了更新插入等相關操作,此進需要在事務上加排他鎖,這樣會導致資料庫的並發性下降,所以對於事務我們一般會選用的是執行較快的幾組語句入在一起的。一般事務較為短小,至少執行速 度會很快。
假定,我是說假定,如果 有一個事務需要執行的時間是一天,由於事務中有更新語句,所以事務加了排他鎖,其他事務與程序只有等待。這樣可想你的資料庫不能再接受任何外部的調用了。也就是說如果你的程序執行過長,最好不要使用事務。
所以在事務語句中是不允許進行資料庫的壓縮,創建,等耗時較高的操作的,這是sql中規定的!
Ⅲ oracle 存儲過程是自動commit嗎
需要寫commit.
外部程序里,
qry1.add('commit');
execsql;
與執行其它語句一樣。
Ⅳ 如何在存儲過程中實現一個UPDATE的SQL里每一條COMMIT一次
每執行一次語句就commit;一次就行了啊
但是個人不建議一個update 一次commit,個人比較傾向為一個過程里只寫1個commit,寫在最後,然後在異常處理裡面寫rollback
避免處理中途出錯結果部分改變了部分沒改變
Ⅳ Oracle存儲過程中需要寫commit嗎
這個完全看你自己的需求。
如果是你不需要再存儲過程中進行提交,而是由調用程序負責提交或者回滾,那麼不需要再存儲過程中commit或者rollback
如果你不想由調用程序負責提交或者回滾,那麼應該在存儲過程中進行commit或rollback
Ⅵ 存儲過程中需要寫commit嗎
如果只是存儲過程中執行的話,對於更新、刪除操縱是一定要寫commit的。另外可以在pl/sql客戶端中對存儲過程進行test測試,可以詳細看到存儲過程的執行過程。
Ⅶ 怎樣在oracle存儲過程中自動commit
需要寫commit. 外部程序里, qry1.add('commit'); execsql; 與執行其它語句一樣。
Ⅷ 一個存儲過程裡面可以有多個BEGIN tran、commit tran、rollback tran嗎
可以,嵌套事務中commit可以提交一個事務點,也就是多個begin tran,就需要多個commit對應
而rollback可以回滾全部事務點,也就是只有一個rollback就可以了
Ⅸ db2存儲過程return前可以commit嗎
直接在存儲過程結束之前添加以下代碼: EXCEPTION WHEN OTHERS THEN rollback; 解釋:以上語句的意思是當出現任何錯誤的時候,直接回滾整個事務。 備註:存儲過程中建議沒有特殊需求的情況下,在執行結束之前不要進行commit,否則在中途提交,...
Ⅹ oracle存儲過程的commit和rollback
commit和rollback不止是存儲過程中使用,所有的事務都需要用到這兩個關鍵字
commit是指將你所做的update,insert,delete數據的更改提交資料庫,完成此次事務,相當於你去商場購物,售貨員給你開了票後,你去收銀台付款完畢,這樣你才可以拿到你要買的貨物.
rollback是指將你所做的update,insert,delete數據的更改恢復更改前的狀態,此次事務取消,相當於你去商場購物,售貨員給你開了票後,你卻不去收銀台付款,而是離開了商場