亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

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

2024-08-29 14:01:26
字體:
來源:轉載
供稿:網友

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

環境準備

使用Oracle的精簡版創建docker方式的demo環境

多行語句的正常執行

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

# 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;> EOFSQL*Plus: Release 11.2.0.2.0 Production on Sun Oct 21 12:08:35 2018Copyright (c) 1982, 2011, Oracle. All rights reserved.Connected to:Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit ProductionSQL> Name    Null?  Type ----------------------------------------- -------- ---------------------------- STUID    NOT NULL NUMBER(4) STUNAME     VARCHAR2(50)SQL> no rows selectedSQL> 1 row created.SQL> 1 row created.SQL> 1 row created.SQL> Commit complete.SQL>    STUID STUNAME---------- --------------------------------------------------   1001 liumiaocn   1002 liumiao   1003 michaelSQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production#

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

問題:

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

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

# sqlplus system/liumiao123@XE <<EOFdesc studentdelete 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;> > > > >    > EOFSQL*Plus: Release 11.2.0.2.0 Production on Sun Oct 21 12:15:16 2018Copyright (c) 1982, 2011, Oracle. All rights reserved.Connected to:Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit ProductionSQL> Name    Null?  Type ----------------------------------------- -------- ---------------------------- STUID    NOT NULL NUMBER(4) STUNAME     VARCHAR2(50)SQL> 2 rows deleted.SQL> no rows selectedSQL> 1 row created.SQL> insert into student values (1001, 'liumiao')*ERROR at line 1:ORA-00001: unique constraint (SYSTEM.SYS_C007024) violatedSQL> 1 row created.SQL>    STUID STUNAME---------- --------------------------------------------------   1001 liumiaocn   1003 michaelSQL> 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 <<EOFWHENEVER SQLERROR EXITdesc studentdelete 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;> > > > > > > > > > EOFSQL*Plus: Release 11.2.0.2.0 Production on Sun Oct 21 12:27:15 2018Copyright (c) 1982, 2011, Oracle. All rights reserved.Connected to:Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit ProductionSQL> SQL> Name    Null?  Type ----------------------------------------- -------- ---------------------------- STUID    NOT NULL NUMBER(4) STUNAME     VARCHAR2(50)SQL> 2 rows deleted.SQL> no rows selectedSQL> 1 row created.SQL> insert into student values (1001, 'liumiao')*ERROR at line 1:ORA-00001: unique constraint (SYSTEM.SYS_C007024) violatedDisconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production# 

WHENEVER SQLERROR CONTINUE

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

# sqlplus system/liumiao123@XE <<EOFWHENEVER SQLERROR CONTINUEdesc studentdelete 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;> > > > > > > > > > EOFSQL*Plus: Release 11.2.0.2.0 Production on Sun Oct 21 12:31:54 2018Copyright (c) 1982, 2011, Oracle. All rights reserved.Connected to:Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit ProductionSQL> SQL> Name    Null?  Type ----------------------------------------- -------- ---------------------------- STUID    NOT NULL NUMBER(4) STUNAME     VARCHAR2(50)SQL> 1 row deleted.SQL> no rows selectedSQL> 1 row created.SQL> insert into student values (1001, 'liumiao')*ERROR at line 1:ORA-00001: unique constraint (SYSTEM.SYS_C007024) violatedSQL> 1 row created.SQL>    STUID STUNAME---------- --------------------------------------------------   1001 liumiaocn   1003 michaelSQL> 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進行自行驗證和探索。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到oracle教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国模精品一区| 亚洲午夜国产成人av电影男同| 日韩视频精品在线| 国产一区二区三区在线播放免费观看| 中文字幕亚洲图片| 69精品小视频| 国产91对白在线播放| 国产美女扒开尿口久久久| 欧美成人午夜激情视频| 亚洲黄色av网站| 亚洲综合在线播放| 欧美专区中文字幕| 91免费看片网站| 九色精品美女在线| 亚洲精品国产拍免费91在线| 中日韩美女免费视频网站在线观看| 亚洲成人精品在线| 国产91久久婷婷一区二区| 欧美在线视频在线播放完整版免费观看| 欧美日韩亚洲一区二区三区| 欧美激情精品久久久| 在线视频精品一| 亚洲视频日韩精品| 亚洲精品国产综合久久| 热久久99这里有精品| 国产精品久久久久久久久久99| 狠狠综合久久av一区二区小说| 亚洲福利视频网站| 精品女厕一区二区三区| 亚洲自拍偷拍网址| 91久久精品国产91久久性色| 性欧美xxxx交| 国产精品久久电影观看| 亚洲社区在线观看| 国产日韩欧美中文在线播放| 97香蕉超级碰碰久久免费的优势| 高清一区二区三区四区五区| 日韩动漫免费观看电视剧高清| 色婷婷**av毛片一区| 两个人的视频www国产精品| 亚洲精品在线观看www| 欧美一级免费看| 国产一区二区日韩精品欧美精品| 亚洲香蕉伊综合在人在线视看| 久久久久五月天| 精品久久久国产精品999| 国产在线98福利播放视频| 91av在线免费观看视频| 国模私拍一区二区三区| 日韩高清免费观看| 欧美日韩中文字幕日韩欧美| 亚洲精品国产精品自产a区红杏吧| 国产精品丝袜高跟| 国产欧美精品一区二区三区介绍| 欧美激情一区二区三级高清视频| 欧美日韩亚洲精品内裤| 国产成人精品在线播放| 久久人人看视频| 日韩综合视频在线观看| 成人福利网站在线观看| 中文字幕亚洲综合| 伊人av综合网| 日韩经典一区二区三区| 伊人久久综合97精品| 国产美女扒开尿口久久久| 国产精品毛片a∨一区二区三区|国| 中文字幕亚洲欧美日韩2019| 久久伊人精品视频| 亚洲欧美国内爽妇网| 亚洲乱码国产乱码精品精| 日韩电影免费观看在线| 国产成人精品在线视频| 国产成人亚洲综合91精品| 一夜七次郎国产精品亚洲| 欧美日韩精品二区| 国产精品一区二区三| 日韩在线观看免费| 国产精品视频xxxx| 欧美日韩激情视频8区| 国产精品亚洲一区二区三区| 日本精品久久久| 欧美另类第一页| 亚洲精品免费网站| 成人免费高清完整版在线观看| 欧美午夜片欧美片在线观看| 伊人久久久久久久久久| 97香蕉超级碰碰久久免费的优势| 大桥未久av一区二区三区| 亚洲国产另类久久精品| 久99久在线视频| 91精品视频免费观看| 欧美高清在线观看| 中文字幕视频一区二区在线有码| 欧美丰满少妇xxxx| 国语自产精品视频在线看| 激情久久av一区av二区av三区| 亚洲欧洲在线观看| 欧美日韩午夜视频在线观看| 国产欧美在线播放| 欧美亚州一区二区三区| 欧美激情在线观看| 日韩成人在线视频网站| 国产精品激情自拍| 国产精品视频地址| 亚洲精品av在线播放| 成人福利网站在线观看| 91色视频在线观看| 日韩在线中文字| 日韩精品中文字幕久久臀| 久久大大胆人体| 欧美理论电影网| 欧美性理论片在线观看片免费| 日韩av成人在线| 日韩av中文字幕在线免费观看| 欧美一区二区三区免费视| 欧美黑人狂野猛交老妇| 亚洲美女av在线播放| 欧美国产欧美亚洲国产日韩mv天天看完整| 黄色成人av网| 精品国产乱码久久久久久天美| 中文字幕亚洲欧美日韩2019| 97精品免费视频| 98精品在线视频| 成人亲热视频网站| 成人精品一区二区三区电影黑人| 北条麻妃99精品青青久久| 美女福利视频一区| 成人信息集中地欧美| 成人羞羞国产免费| 亚洲日韩欧美视频一区| 国产精品免费视频久久久| 国产精品91久久| 国产精品www网站| 在线成人一区二区| 成人国产亚洲精品a区天堂华泰| 亚洲欧美一区二区三区四区| 日韩免费在线电影| 亚洲精品欧美一区二区三区| 成人网页在线免费观看| 欧美大秀在线观看| 日韩中文字幕精品视频| 日韩中文在线中文网三级| 国产精品十八以下禁看| 久久国产精品视频| 欧美成人国产va精品日本一级| 国产精品主播视频| 欧美性xxxx极品hd欧美风情| 欧美激情视频一区| 日本乱人伦a精品| 91老司机精品视频| 日本成人免费在线| www.日本久久久久com.| 日韩视频免费看| 精品视频在线导航| 日韩暖暖在线视频| 久久影院资源站| 国产一区玩具在线观看| 97视频com| 国产精品永久免费| 欧美激情第6页| 美日韩精品免费观看视频| 久久综合色88| 精品一区电影国产| 一夜七次郎国产精品亚洲|