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

首頁 > 數據庫 > Oracle > 正文

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

2020-07-26 13:59:10
字體:
來源:轉載
供稿:網友

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

環境準備

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

  • http://www.49028c.com/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;> 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進行自行驗證和探索。

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲高清av在线| 91在线观看免费| 91成人精品网站| 国产黑人绿帽在线第一区| 欧美大尺度激情区在线播放| 久久免费在线观看| 奇米4444一区二区三区| 91在线高清视频| 欧美激情综合色综合啪啪五月| 欧美精品免费在线| 97国产精品人人爽人人做| 亚洲娇小xxxx欧美娇小| 欧美性色xo影院| 亚洲一品av免费观看| 亚洲欧美国产一区二区三区| 97视频在线观看成人| 成人午夜小视频| 国内精品久久久久久中文字幕| 亚洲国产欧美一区二区三区同亚洲| 97香蕉久久超级碰碰高清版| 粉嫩av一区二区三区免费野| 一区二区三区在线播放欧美| 热门国产精品亚洲第一区在线| 色婷婷av一区二区三区在线观看| 国产精品一区二区久久国产| 久久99久久99精品免观看粉嫩| 久久这里只有精品视频首页| 97在线视频免费看| 久久精品国产96久久久香蕉| 国产精品白嫩初高中害羞小美女| 亚洲第一精品福利| 亚洲欧美中文日韩v在线观看| 亚洲free性xxxx护士白浆| 亚洲日韩中文字幕在线播放| 亚洲qvod图片区电影| 中文字幕av一区二区三区谷原希美| 久久影院在线观看| 日韩美女免费观看| 4p变态网欧美系列| 国产成人精品一区二区在线| 亚洲男子天堂网| 欧美黄色片在线观看| 欧美丰满老妇厨房牲生活| 国产剧情久久久久久| 国内外成人免费激情在线视频网站| 欧美高清在线观看| 欧洲一区二区视频| 欧美区在线播放| 日韩av电影手机在线观看| 欧美大成色www永久网站婷| 久久久久中文字幕| 91精品国产色综合久久不卡98口| 一本一道久久a久久精品逆3p| 亚洲国产成人在线视频| 亚洲人成网站777色婷婷| 三级精品视频久久久久| 亚洲国产精品va在线| 午夜精品久久久久久久99黑人| 欧美成人一区二区三区电影| 狠狠躁夜夜躁久久躁别揉| 亚洲毛片在线免费观看| 欧美国产精品va在线观看| 欧美一级在线播放| 国产精品专区第二| 久久国产精品偷| 成人自拍性视频| 国产精品日韩在线一区| 国产脚交av在线一区二区| 久久中文字幕在线| 日韩美女免费视频| 欧美色视频日本高清在线观看| 精品久久香蕉国产线看观看亚洲| 国产视频丨精品|在线观看| 国产成人精品午夜| 97激碰免费视频| 久久久久久国产精品美女| 精品国产乱码久久久久久虫虫漫画| 国产精品99久久99久久久二8| 国产日韩欧美中文| 国内成人精品视频| 91在线高清免费观看| 欧美成人一区二区三区电影| 国产精品一区二区三区久久| 精品小视频在线| 91精品综合久久久久久五月天| 日av在线播放中文不卡| 影音先锋欧美精品| 亚洲电影免费观看高清完整版在线观看| 91精品国产高清久久久久久久久| xvideos成人免费中文版| 成人欧美一区二区三区在线湿哒哒| 操日韩av在线电影| 日韩精品欧美国产精品忘忧草| 日韩在线视频网站| 亚洲va欧美va国产综合剧情| 国产精品日本精品| 欧美最猛性xxxxx亚洲精品| 久久精品国产一区| 亚洲美女av网站| 久久午夜a级毛片| 久久亚洲电影天堂| 欧美激情精品久久久久久久变态| 国产精品视频区1| 久久久999成人| 国产日本欧美视频| 精品国产乱码久久久久久婷婷| 992tv在线成人免费观看| 国产在线视频一区| 国产精品一区二区久久精品| 欧美噜噜久久久xxx| 国产色婷婷国产综合在线理论片a| 日本成熟性欧美| 亚洲精品丝袜日韩| 日韩视频中文字幕| 欧美肥臀大乳一区二区免费视频| 尤物yw午夜国产精品视频明星| 中文字幕在线视频日韩| 久久久久久久影院| 狠狠躁天天躁日日躁欧美| 久久精品国产成人精品| www日韩中文字幕在线看| 亚洲综合国产精品| 亚洲美女中文字幕| 精品国产31久久久久久| 成人在线小视频| 亚洲精品成a人在线观看| 日韩在线观看av| 自拍偷拍亚洲欧美| 国产精品96久久久久久| 中文字幕最新精品| 亚洲网址你懂得| 国产精品久久久久影院日本| 欧美视频在线观看免费网址| 久久99视频精品| 青青久久av北条麻妃黑人| 日韩精品免费观看| 国产欧美精品一区二区三区介绍| 韩曰欧美视频免费观看| 亚洲综合中文字幕在线| 国产高清在线不卡| 亚洲免费视频观看| 久久精品中文字幕免费mv| 最近2019中文字幕大全第二页| 成人淫片在线看| 精品日本高清在线播放| 国产一区二区三区视频| 国产精品成人av在线| 久久福利视频导航| 国产成人精品亚洲精品| 亚洲风情亚aⅴ在线发布| 国产伦精品一区二区三区精品视频| 91精品国产自产91精品| 91亚洲精品在线| 亚洲乱码av中文一区二区| 日韩免费视频在线观看| 亚洲欧美成人一区二区在线电影| 亚洲视频在线免费看| 亚洲天堂影视av| 亚洲精品福利在线| 亚洲精品美女免费| 久久精品国产视频| 亚洲欧美激情四射在线日| 日韩免费av一区二区| 综合欧美国产视频二区|