最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle基礎(chǔ)多條sql執(zhí)行在中間的語(yǔ)句出現(xiàn)錯(cuò)誤時(shí)的控制方式

 更新時(shí)間:2018年12月27日 08:58:13   作者:liumiaocn  
今天小編就為大家分享一篇關(guān)于Oracle基礎(chǔ)多條sql執(zhí)行在中間的語(yǔ)句出現(xiàn)錯(cuò)誤時(shí)的控制方式,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

多條sql執(zhí)行時(shí)如果在中間的語(yǔ)句出現(xiàn)錯(cuò)誤,后續(xù)會(huì)不會(huì)直接執(zhí)行,如何進(jìn)行設(shè)定,以及其他數(shù)據(jù)庫(kù)諸如Mysql是如何對(duì)應(yīng)的,這篇文章將會(huì)進(jìn)行簡(jiǎn)單的整理和說明。

環(huán)境準(zhǔn)備

使用Oracle的精簡(jiǎn)版創(chuàng)建docker方式的demo環(huán)境,詳細(xì)可參看:

多行語(yǔ)句的正常執(zhí)行

對(duì)上篇文章創(chuàng)建的兩個(gè)字段的學(xué)生信息表,正常添加三條數(shù)據(jù),詳細(xì)如下:

# 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
#

多行語(yǔ)句中間出錯(cuò)時(shí)的缺省動(dòng)作

問題:

三行insert語(yǔ)句,如果中間的一行出錯(cuò),缺省的狀況下第三行會(huì)不會(huì)被插入進(jìn)去?

我們將第二條insert語(yǔ)句的主鍵故意設(shè)定重復(fù),然后進(jìn)行確認(rèn)第三條數(shù)據(jù)是否會(huì)進(jìn)行插入即可。

# 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
# 

結(jié)果非常清晰地表明是會(huì)繼續(xù)執(zhí)行的,在oracle中通過什么來(lái)對(duì)其進(jìn)行控制呢?

WHENEVER SQLERROR

答案很簡(jiǎn)單,在oracle中通過WHENEVER SQLERROR來(lái)進(jìn)行控制。

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

WHENEVER SQLERROR EXIT

添加此行設(shè)定,即會(huì)在失敗的時(shí)候立即推出,接下來(lái)我們進(jìn)行確認(rèn):

# 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則和缺省方式下的行為一致,出錯(cuò)仍然繼續(xù)執(zhí)行

# 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中類似的機(jī)制

mysql中使用source是否提供相關(guān)的類似機(jī)制的問題中,最終引入了Oracle此項(xiàng)功能在mysql中引入的建議,詳細(xì)請(qǐng)參看:

所以目前這只是一個(gè)sqlplus端的強(qiáng)化功能,并非標(biāo)準(zhǔn),不同數(shù)據(jù)庫(kù)需要確認(rèn)相應(yīng)的功能是否存在。

小結(jié)

Oracle中使用WHENEVER SQLERROR進(jìn)行出錯(cuò)控制是否繼續(xù),本文給出的例子非常簡(jiǎn)單,詳細(xì)功能的使用可根據(jù)文中列出的Usage進(jìn)行自行驗(yàn)證和探索。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • oracle鎖表該如何解決

    oracle鎖表該如何解決

    這篇文章主要給大家介紹了關(guān)于oracle鎖表如何解決的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Oracle 數(shù)據(jù)庫(kù)特殊查詢總結(jié)

    Oracle 數(shù)據(jù)庫(kù)特殊查詢總結(jié)

    這篇文章主要介紹了Oracle 數(shù)據(jù)庫(kù)特殊查詢總結(jié)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • Oracle EBS工具選項(xiàng):關(guān)閉其他表單修改方法

    Oracle EBS工具選項(xiàng):關(guān)閉其他表單修改方法

    這篇文章主要介紹了Oracle EBS工具選項(xiàng)關(guān)閉其他表單修改方法,包括通過SQL語(yǔ)句永久打開或關(guān)閉這個(gè)選項(xiàng)的方法,需要的朋友可以了解下。
    2017-09-09
  • oracle10g發(fā)送email示例

    oracle10g發(fā)送email示例

    本文介紹了通過Oracle10g發(fā)送Email的實(shí)例,該P(yáng)rocedure支持中文郵件、HTML代碼、多收件人。 ,需要的朋友可以參考下
    2014-01-01
  • Oracle觸發(fā)器和程序包的基本介紹

    Oracle觸發(fā)器和程序包的基本介紹

    這篇文章主要介紹了Oracle觸發(fā)器和程序包,主要包括觸發(fā)器的概念和創(chuàng)建方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Ubuntu?22.04或20.04安裝Oracle?SQL?Developer的圖文教程

    Ubuntu?22.04或20.04安裝Oracle?SQL?Developer的圖文教程

    Oracle?SQL?Developer?是一個(gè)免費(fèi)平臺(tái),為開發(fā)人員提供用于開發(fā)和管理?Oracle?數(shù)據(jù)庫(kù)的集成開發(fā)環(huán)境,這篇文章主要介紹了Ubuntu?22.04或20.04安裝Oracle?SQL?Developer圖文教程,需要的朋友可以參考下
    2024-08-08
  • Oracle數(shù)據(jù)庫(kù)opatch補(bǔ)丁操作流程

    Oracle數(shù)據(jù)庫(kù)opatch補(bǔ)丁操作流程

    這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)opatch補(bǔ)丁操作流程的相關(guān)資料,本文從升級(jí)前準(zhǔn)備工作到安裝補(bǔ)丁操作整理過程都介紹的非常詳細(xì),需要的朋友可以參考下
    2016-10-10
  • Oracle數(shù)據(jù)庫(kù)部分遷至閃存存儲(chǔ)的實(shí)現(xiàn)方法

    Oracle數(shù)據(jù)庫(kù)部分遷至閃存存儲(chǔ)的實(shí)現(xiàn)方法

    下面小編就為大家分享一篇Oracle數(shù)據(jù)庫(kù)部分遷至閃存存儲(chǔ)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2017-12-12
  • 自動(dòng)備份Oracle數(shù)據(jù)庫(kù)

    自動(dòng)備份Oracle數(shù)據(jù)庫(kù)

    自動(dòng)備份Oracle數(shù)據(jù)庫(kù)...
    2007-03-03
  • Oracle鎖處理、解鎖方法

    Oracle鎖處理、解鎖方法

    本文通過實(shí)例代碼較詳細(xì)的給大家介紹了Oracle鎖處理、解鎖方法,需要的朋友可以參考下
    2018-06-06

最新評(píng)論

广宁县| 柯坪县| 原阳县| 灵丘县| 保山市| 金堂县| 岳池县| 和顺县| 广汉市| 隆化县| 沙雅县| 马尔康县| 财经| 晋江市| 施甸县| 息烽县| 桃江县| 绥阳县| 疏附县| 赣榆县| 勐海县| 华坪县| 仁怀市| 卓尼县| 上蔡县| 宜丰县| 拉萨市| 江西省| 手游| 灵台县| 马尔康县| 沅陵县| 浦城县| 米泉市| 涿鹿县| 林西县| 揭东县| 修水县| 安岳县| 竹山县| 安泽县|