儲存過程中慎用 execute immediate
儲存過程中慎用 execute immediate ,
execute immediate 執行DDL語句一定要小心,否則會造成資料一至性問題。
[@more@]1,
create table t1( id1 number );
2,
begin
insert into t1 values (101) ;
execute immediate ' create table t2 (id1 number ) ';
end;
/
PL/SQL procedure successfully completed
資料已經被提交,無論你是否COMMIT。
如果一個過程中有多個DML語中,中間混雜了類似的DDL動態語句,就會造成DDL之前的語句提交,儘管DDL之後的語句失敗了,最終也無法將整個事物回滾到一致性狀態。
3,
begin
insert into t1 values (101) ;
execute immediate ' alter session enable parallel dml ' ;
end;
/
ORA-12841: Cannot alter the session parallel DML state within a transaction
ORA-06512: at line 8
但是"alter session" 這個DDL 語句不能在事物中執行。 必須首先提交或回滾事物。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/350519/viewspace-1033930/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- EXECUTE IMMEDIATE 儲存過程中 許可權不足及EXECUTE IMMEDIATE的除錯避坑儲存過程除錯
- [20210426]execute immediate.txt
- jsp中呼叫儲存過程JS儲存過程
- Sqlserver中的儲存過程SQLServer儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- SQLSERVER儲存過程SQLServer儲存過程
- Oracle儲存過程Oracle儲存過程
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- MySQL儲存過程中如何使用ROLLBACKMySql儲存過程
- MySQL---------儲存過程MySql儲存過程
- 造數儲存過程儲存過程
- linux呼叫儲存過程Linux儲存過程
- Oracle儲存過程-1Oracle儲存過程
- 儲存過程——遊標儲存過程
- Winform呼叫儲存過程ORM儲存過程
- 儲存過程 傳 datatable儲存過程
- mysql儲存過程整理MySql儲存過程
- JAVA儲存過程(轉)Java儲存過程
- JdbcTemplate調儲存過程JDBC儲存過程
- MySQL之儲存過程MySql儲存過程
- oracle的儲存過程Oracle儲存過程
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- Sql儲存過程分頁--臨時表儲存SQL儲存過程
- mybatis儲存過程返回listMyBatis儲存過程
- 資料庫儲存過程資料庫儲存過程
- mysql如何呼叫儲存過程MySql儲存過程
- Mysql 儲存過程的使用MySql儲存過程
- SQL 分頁儲存過程SQL儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- mongo 儲存過程詳解Go儲存過程
- PL/SQL中動態掉用儲存過程SQL儲存過程
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- Oracle儲存過程中定義多個遊標Oracle儲存過程