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儲存過程OracleSQL儲存過程
- tcbs_批量儲存過程_plsql事務_savepoint_異常儲存過程SQL
- oracle 儲存過程以及plsql語句塊Oracle儲存過程SQL
- MySQL 儲存過程/遊標/事務MySql儲存過程
- 儲存過程中巢狀事務儲存過程巢狀
- 關於事務的儲存過程儲存過程
- oracle plsql儲存過程_運算子優先順序OracleSQL儲存過程
- Oracle儲存過程乾貨(二):PLSQL控制語句Oracle儲存過程SQL
- 不要在儲存過程中控制事務儲存過程
- oracle plsql儲存過程_while loop_end loop_exitOracleSQL儲存過程WhileOOP
- Oracle儲存過程乾貨(三):PLSQL迴圈語句Oracle儲存過程SQL
- MySQL儲存過程使用if子查詢判斷需要注意MySql儲存過程
- Oracle儲存過程Oracle儲存過程
- 儲存過程、觸發器與事務之間的關係儲存過程觸發器
- 儲存過程注意事項儲存過程
- PLSQL學習-【7儲存過程、函式】SQL儲存過程函式
- oracle plsql儲存過程除錯出錯_PLS-00361OracleSQL儲存過程除錯
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- MySQL 儲存過程中事務sql異常回滾MySql儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- Oracle儲存過程-1Oracle儲存過程
- oracle的儲存過程Oracle儲存過程
- Oracle儲存過程例子Oracle儲存過程
- Oracle建立儲存過程Oracle儲存過程
- ORACLE 儲存過程示例Oracle儲存過程
- 在toad_plsql developer_oracle sql developer呼叫儲存過程SQLDeveloperOracle儲存過程
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle
- 【MSSQL】sqlserver 各種判斷是否存在(表名、函式、儲存過程.......)SQLServer函式儲存過程
- Sql Server判斷資料庫、表、儲存過程、函式是否存在SQLServer資料庫儲存過程函式
- oracle plsql package_body_procedure_構建語法_sp_儲存過程OracleSQLPackage儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- oracle 儲存過程批次提交Oracle儲存過程
- oracle 儲存過程學習Oracle儲存過程
- [Flashback]Oracle flashback儲存過程Oracle儲存過程
- Oracle儲存過程學習Oracle儲存過程
- oracle的儲存過程格式Oracle儲存過程
- java 呼叫oracle 儲存過程JavaOracle儲存過程