oracle plsql儲存過程_if判斷與事務commit
因工作批次有如下類似程式碼IF (lvnCheckPointCtr > lcnCOMMITAFTER) THEN
lvsBatchActvMsg := 'Attempting to update CheckPoint in QueApplHist table';
lvsCheckPointUpdateText := lcsCHECKPOINTTEXT_PROCESS ||
lvnPrevAcctNbr ||
lcsCHECKPOINTTEXT_RESTART ||
lvnPrevAcctNbr;
UPDATE QueApplHist
SET CheckPoint = lvsCheckPointUpdateText, DateLastMaint = SYSDATE
WHERE QueNbr = in_QUENBR
AND ApplNbr = in_APPLNBR
AND QueSubNbr = in_QUESUBNBR
AND StartDateTime = lvdtStartDateTime;
IF (SQL%ROWCOUNT = 0) THEN
RAISE OSI_GENERAL_ERROR;
END IF;
COMMIT;
lvnCheckPointCtr := 0;
END IF;
初一看,我認為commit只會提交if程式碼塊中的dml語句,而不會提交if程式碼塊之前的dml,經測試後,發現結論與想我的不致.
附上測試程式碼
SQL> create table log_test(seq int,logman varchar2(10));
Table created
SQL> create table other_log(seq int,logman varchar2(10));
Table created
SQL> declare
2 va varchar2(10);
3 b integer;
4 begin
5 insert into log_test values(1,'zhaixy');
6 va:='sex';
7 if (va='sex') then
8 dbms_output.put_line('haha');
9 insert into other_log values(1,'zhaixy');
10 commit;
11 end if;
12 end;
13 /
haha
用plsql developer開啟新的會話,查詢log_test及other_log表
發現兩表皆插入了資料,而不是我之前想的僅插入if程式碼塊中的other_log
結論:
if程式碼塊中的commit語句會一併提交if程式碼塊及之if程式碼塊之前所有的dml
再次說明對於事務的理解不夠清晰與深入.
目前從事的金融行業,事務的重要性是不言而喻.努力學習吧
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-723265/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle儲存過程乾貨(二):PLSQL控制語句Oracle儲存過程SQL
- Oracle儲存過程乾貨(三):PLSQL迴圈語句Oracle儲存過程SQL
- Oracle儲存過程Oracle儲存過程
- Oracle儲存過程-1Oracle儲存過程
- oracle的儲存過程Oracle儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程
- LightDB/PostgreSQL 相容Oracle儲存過程SQLOracle儲存過程
- oracle儲存過程書寫格式Oracle儲存過程
- 【MSSQL】sqlserver 各種判斷是否存在(表名、函式、儲存過程.......)SQLServer函式儲存過程
- Oracle vs PostgreSQL Develop(29) - COMMIT in PLSQLOracleSQLdevMIT
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- ibatis呼叫oracle儲存過程(極簡版)BATOracle儲存過程
- 【MySQL】MySQL(三)儲存過程和函式、觸發器、事務MySql儲存過程函式觸發器
- mySql 儲存過程與函式MySql儲存過程函式
- MySQL索引、事務與儲存引擎MySql索引儲存引擎
- Springboot呼叫Oracle儲存過程的幾種方式Spring BootOracle儲存過程
- Oracle 編譯儲存過程卡死解決方法Oracle編譯儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- MySQL--儲存過程與檢視MySql儲存過程
- SqlServer儲存過程的建立與使用SQLServer儲存過程
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- SQLSERVER儲存過程SQLServer儲存過程
- oracle儲存過程許可權繼承小結Oracle儲存過程繼承
- Oracle儲存過程編譯卡死的解決方法Oracle儲存過程編譯
- Oracle儲存過程中定義多個遊標Oracle儲存過程
- Oracle儲存過程中跳出迴圈的寫法Oracle儲存過程
- Oracle服務啟動-索引-子查詢-分頁儲存過程問題Oracle索引儲存過程
- MySQL自定義函式與儲存過程MySql函式儲存過程
- [20180502]PLDEVELOP與儲存過程除錯.txtdev儲存過程除錯
- ORACLE事務和例項恢復過程梳理Oracle
- MySQL---------儲存過程MySql儲存過程
- 造數儲存過程儲存過程