好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Oracle基礎多條sql執行在中間的語句出現錯誤時的控制方式

Oracle基礎多條sql執行在中間的語句出現錯誤時的控制方式

熱門標簽:圖像地圖標注 海南400電話哪里辦理 呼倫貝爾智能手機地圖標注 分布式呼叫中心 濟南地圖標注公司 貴陽電話外呼系統哪家好 400電話是不是免費申請 南寧人工智能電銷機器人費用 安陽外呼系統免費

多條sql執行時如果在中間的語句出現錯誤,后續會不會直接執行,如何進行設定,以及其他數據庫諸如Mysql是如何對應的,這篇文章將會進行簡單的整理和說明。

環境準備

使用Oracle的精簡版創建docker方式的demo環境,詳細可參看:

  • https://www.jb51.net/article/153533.htm

多行語句的正常執行

對上篇文章創建的兩個字段的學生信息表,正常添加三條數據,詳細如下:

# sqlplus system/liumiao123@XE EOF
> desc student
> select * from student;
> insert into student values (1001, 'liumiaocn');
> insert into student values (1002, 'liumiao');
> insert into student values (1003, 'michael');
> commit;
> select * from student;
> EOF
SQL*Plus: Release 11.2.0.2.0 Production on Sun Oct 21 12:08:35 2018
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> Name    Null?  Type
 ----------------------------------------- -------- ----------------------------
 STUID    NOT NULL NUMBER(4)
 STUNAME     VARCHAR2(50)
SQL> 
no rows selected
SQL> 
1 row created.
SQL> 
1 row created.
SQL> 
1 row created.
SQL> 
Commit complete.
SQL> 
   STUID STUNAME
---------- --------------------------------------------------
   1001 liumiaocn
   1002 liumiao
   1003 michael
SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
#

多行語句中間出錯時的缺省動作

問題:

三行insert語句,如果中間的一行出錯,缺省的狀況下第三行會不會被插入進去?

我們將第二條insert語句的主鍵故意設定重復,然后進行確認第三條數據是否會進行插入即可。

# sqlplus system/liumiao123@XE EOF
desc student
delete from student;
select * from student;
insert into student values (1001, 'liumiaocn');
insert into student values (1001, 'liumiao');
insert into student values (1003, 'michael');
select * from student;
commit;> > > > >    
> EOF
SQL*Plus: Release 11.2.0.2.0 Production on Sun Oct 21 12:15:16 2018
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> Name    Null?  Type
 ----------------------------------------- -------- ----------------------------
 STUID    NOT NULL NUMBER(4)
 STUNAME     VARCHAR2(50)
SQL> 
2 rows deleted.
SQL> 
no rows selected
SQL> 
1 row created.
SQL> insert into student values (1001, 'liumiao')
*
ERROR at line 1:
ORA-00001: unique constraint (SYSTEM.SYS_C007024) violated
SQL> 
1 row created.
SQL> 
   STUID STUNAME
---------- --------------------------------------------------
   1001 liumiaocn
   1003 michael
SQL> SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
# 

結果非常清晰地表明是會繼續執行的,在oracle中通過什么來對其進行控制呢?

WHENEVER SQLERROR

答案很簡單,在oracle中通過WHENEVER SQLERROR來進行控制。

WHENEVER SQLERROR {EXIT [SUCCESS | FAILURE | WARNING | n | variable | :BindVariable] [COMMIT | ROLLBACK] | CONTINUE [COMMIT | ROLLBACK | NONE]}

WHENEVER SQLERROR EXIT

添加此行設定,即會在失敗的時候立即推出,接下來我們進行確認:

# sqlplus system/liumiao123@XE EOF
WHENEVER SQLERROR EXIT
desc student
delete from student;
select * from student;
insert into student values (1001, 'liumiaocn');
insert into student values (1001, 'liumiao');
insert into student values (1003, 'michael');
select * from student;
commit;> > > > > > > > > 
> EOF
SQL*Plus: Release 11.2.0.2.0 Production on Sun Oct 21 12:27:15 2018
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> SQL> Name    Null?  Type
 ----------------------------------------- -------- ----------------------------
 STUID    NOT NULL NUMBER(4)
 STUNAME     VARCHAR2(50)
SQL> 
2 rows deleted.
SQL> 
no rows selected
SQL> 
1 row created.
SQL> insert into student values (1001, 'liumiao')
*
ERROR at line 1:
ORA-00001: unique constraint (SYSTEM.SYS_C007024) violated
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
# 

WHENEVER SQLERROR CONTINUE

使用CONTINUE則和缺省方式下的行為一致,出錯仍然繼續執行

# sqlplus system/liumiao123@XE EOF
WHENEVER SQLERROR CONTINUE
desc student
delete from student;
select * from student;
insert into student values (1001, 'liumiaocn');
insert into student values (1001, 'liumiao');
insert into student values (1003, 'michael');
select * from student;
commit;> > > > > > > > > 
> EOF
SQL*Plus: Release 11.2.0.2.0 Production on Sun Oct 21 12:31:54 2018
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> SQL> Name    Null?  Type
 ----------------------------------------- -------- ----------------------------
 STUID    NOT NULL NUMBER(4)
 STUNAME     VARCHAR2(50)
SQL> 
1 row deleted.
SQL> 
no rows selected
SQL> 
1 row created.
SQL> insert into student values (1001, 'liumiao')
*
ERROR at line 1:
ORA-00001: unique constraint (SYSTEM.SYS_C007024) violated
SQL> 
1 row created.
SQL> 
   STUID STUNAME
---------- --------------------------------------------------
   1001 liumiaocn
   1003 michael
SQL> 
Commit complete.
SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
#

Mysql中類似的機制

mysql中使用source是否提供相關的類似機制的問題中,最終引入了Oracle此項功能在mysql中引入的建議,詳細請參看:

  • https://bugs.mysql.com/bug.php?id=73177

所以目前這只是一個sqlplus端的強化功能,并非標準,不同數據庫需要確認相應的功能是否存在。

小結

Oracle中使用WHENEVER SQLERROR進行出錯控制是否繼續,本文給出的例子非常簡單,詳細功能的使用可根據文中列出的Usage進行自行驗證和探索。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

您可能感興趣的文章:
  • Oracle常見問題解決方案匯總
  • Oracle全角數字轉換半角數字
  • Oracle連續相同數據的統計
  • oracle常用分析函數與聚合函數的用法
  • Oracle相關組件版本信息的介紹
  • Oracle基礎:程序中調用sqlplus的方式
  • Oracle查詢sql錯誤信息的控制和定位
  • 運行在容器中的Oracle XE-11g
  • Oracle基礎:通過sqlplus執行sql語句后的結果進行判斷
  • Oracle導入導出數據的幾種方式

標簽:許昌 遼源 焦作 滁州 合肥 南充 涼山 郴州

巨人網絡通訊聲明:本文標題《Oracle基礎多條sql執行在中間的語句出現錯誤時的控制方式》,本文關鍵詞  Oracle,基礎,多條,sql,執,行在,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle基礎多條sql執行在中間的語句出現錯誤時的控制方式》相關的同類信息!
  • 本頁收集關于Oracle基礎多條sql執行在中間的語句出現錯誤時的控制方式的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 国产精品理论片| 强行侵犯亲女在线观看| 久久欧美人与动牲交另类电影| 桃红色jl界进口主打| 蜜臀av国精产品一二二线| 被当着夫面被公侵犯中字| 第1章饱满的乳峰喷奶水| 亚洲色啵啵影院在线观看| 把腿扒开让我添30分钟视频| 男女自偷自拍视频免费观看篇| 高H各种姿势调教1v1| 鱼泡网免费下载| 第一次处破女h文| 公交忘穿内裤揉捏呻吟白浆| 国产精品视频第一区二区三区| 女人被男人吃奶到高潮容易怀孕吗| 深夜他撕开我的奶罩| 同学的大乳娇妻| 91丨精品丨蝌蚪丨白丝jk| 97av在线视频| 亚洲国产精品久久| 精品香蕉99久久久久网站| 不能流泪的悲伤电影| tiktok在线看免费入口| 插女生阴道视频| 日本人视频-jlzzjlzzjlzz| 啊轻点j吧太粗??死我视频| 亚洲91网站| 一男一女的一级毛片| 老师和女学生毛片A级| 777766超级横财富图片| 在线观看日批视频| 久久免费看少妇高潮A片小说图片| 巜交换做爰2H无删减| 精油按摩大学生| 永久影院| 91无遮挡无码无删减在线观看| 日韩在线视| 十八毛片| 久久av高潮av无码av喷吹| 《甜性涩爱》在线观看完整|