更新存儲過程需要提交嗎
㈠ Oracle存儲過程中需要寫commit嗎
這個完全看你自己的需求。
如果是你不需要再存儲過程中進行提交,而是由調用程序負責提交或者回滾,那麼不需要再存儲過程中commit或者rollback
如果你不想由調用程序負責提交或者回滾,那麼應該在存儲過程中進行commit或rollback
㈡ 關於plsql!!!
首先,要弄清SQL語句分五大類:數據定義語句、數據操縱語句、數據查詢語句、事務控制語句、數據控制語句。
其中,數據定義語句(CREATE、ALTER、DROP)帶有自動提交功能。
數據操縱語句(INSERT、UPDATE、DELETE)不帶自動提交功能。
其次,SQL*PLUS、PL/SQL中,除了正常提交COMMIT(F10)、數據定義語句意外,無論什麼方式退出SQL*PLUS、PL/SQL(除了突然掉電)都帶有提交功能。
㈢ oracle存儲過程執行三條sql語句都是不需要提交的比如創建表,或者表分區,如果執行到第三條出錯
不能的。
建表和分區屬於DDL語句,DDL語句是自動COMMIT的。不能回滾。
㈣ 存儲過程中需要寫commit嗎
如果只是存儲過程中執行的話,對於更新、刪除操縱是一定要寫commit的。另外可以在pl/sql客戶端中對存儲過程進行test測試,可以詳細看到存儲過程的執行過程。
㈤ Oracle 每天要對很多大表更新數據,寫了一個批量提交的存儲過程,多個表能同時調用這個批量腳本嗎
當然可以,不過需要使用大量的動態sql或者 ref cursor。需要設計好。
㈥ 一個存儲過程中更新多個表可以用一個COMMIT嗎
技術上是可以的,原則建議。
一般情況下事務有原子性,如果要一起執行的語句放在事務中提交,達到這些語句的「同步」,要不都不執行,要不都執行。顯然,這里是可以放在一起的讓其執行的。
但語句中很明顯涉及了更新插入等相關操作,此進需要在事務上加排他鎖,這樣會導致資料庫的並發性下降,所以對於事務我們一般會選用的是執行較快的幾組語句入在一起的。一般事務較為短小,至少執行速 度會很快。
假定,我是說假定,如果 有一個事務需要執行的時間是一天,由於事務中有更新語句,所以事務加了排他鎖,其他事務與程序只有等待。這樣可想你的資料庫不能再接受任何外部的調用了。也就是說如果你的程序執行過長,最好不要使用事務。
所以在事務語句中是不允許進行資料庫的壓縮,創建,等耗時較高的操作的,這是SQL中規定的!
㈦ Oracle存儲過程中需要寫commit嗎
需要,不提交你寫進去的資料庫不承認。
當然你也可以用
的綠色三角形來提交
㈧ oracle存儲過程中update語句的提交問題
後面是必須跟commit的,
看下是不是打開了自動提交
show autocommit;
如果是on的話,就能解釋你這個是什麼情況了。
還有就是你在執行之後是不是做了用戶切換,切換用戶,用的是connect命令,是會提交事務的。
㈨ oracle存儲過程中update語句的提交問題
後面是必須跟commit的,
看下是不是打開了自動提交
show
autocommit;
如果是on的話,就能解釋你這個是什麼情況了。
還有就是你在執行之後是不是做了用戶切換,切換用戶,用的是connect命令,是會提交事務的。
㈩ Oracle存儲過程,更新大量數據,如何循環分批次提交
可通過以下方法:
以100條數據為例,如果海量數據可參考。
如test表中有如下數據:
declare
iint;--定義變數
v_countint;--定義變數
v_loopint;--定義變數
begin
selectcount(*)intov_countfromtest;--計算表內數據總數
selectceil(v_count/10)intov_loopfromal;--計算需要循環次數
i:=1;--為i賦值
whilei<=v_looploop--循環退出條件
updatetestsetbegintime=<=10;--執行更新
commit;--提交
i:=i+1;--i依次加1
endloop;--結束循環
end;