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

Oracle基礎(chǔ):通過sqlplus執(zhí)行sql語句后的結(jié)果進行判斷

 更新時間:2018年12月26日 15:29:28   作者:liumiaocn  
今天小編就為大家分享一篇關(guān)于Oracle基礎(chǔ):通過sqlplus執(zhí)行sql語句后的結(jié)果進行判斷,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

這篇文章介紹一下如何對sqlplus執(zhí)行的sql語句結(jié)果進行判斷。

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

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

 http://m.fzitv.net/article/153533.htm

常見問題

在sqlplus中執(zhí)行sql語句,如果直接使用命令行的方式調(diào)用時會碰到兩個問題:

  • 問題1: 需要進行交互性的輸入
  • 問題2:結(jié)果的判斷不能通過返回值來確認(rèn)

解決方式

在腳本調(diào)用里,解決方式如下

  • 問題1可以通過前文提到的Here Document來解決。
  • 問題2,則可以通過對輸出的判斷來進行,因為Oracle的錯誤代碼基本以O(shè)RA-打頭,所以根據(jù)輸出中是否包含ORA-,基本可確認(rèn)是否存在錯誤。

執(zhí)行結(jié)果判斷示例

這里使用命令行的方式進行驗證,直接拷貝到腳本中即可以使用腳本的方式與sqlplus進行集成。

oracle@e871d42341c0:~$ 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');
> commit;
> select * from student;
> EOF
SQL*Plus: Release 11.2.0.2.0 Production on Mon Oct 22 05:18:51 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> 
3 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> 
Commit complete.
SQL> 
  STUID STUNAME
---------- --------------------------------------------------
  1001 liumiaocn
  1003 michael

SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
oracle@e871d42341c0:~$ echo $?
0
oracle@e871d42341c0:~$

從上文可以看到,三行insert的sql語句由于第二行的主鍵重復(fù),出現(xiàn)錯誤,但是最終的結(jié)果使用命令行的方式無法對結(jié)果進行判斷,這是控制臺方式的常見場景,比如sftp或者ftp等也有此特點,一般常用的對應(yīng)方式無法通過返回值進行判斷,只能通過輸出來進行判斷。

輸出信息

輸出分為標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤兩種,輸入輸出的FD分別為:

  • 標(biāo)準(zhǔn)輸入:0
  • 標(biāo)準(zhǔn)輸出:1
  • 標(biāo)準(zhǔn)錯誤:2

接下來我們看一下上文中的信息那些是標(biāo)準(zhǔn)輸出,哪些是標(biāo)準(zhǔn)錯誤:

oracle@e871d42341c0:~$ sqlplus system/abcd1234@XE <<EOF 2>output.error 1>output.info
> 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');
> commit;
> select * from student;
> EOF
oracle@e871d42341c0:~$ 
oracle@e871d42341c0:~$ cat output.error
oracle@e871d42341c0:~$ 
oracle@e871d42341c0:~$ cat output.info
SQL*Plus: Release 11.2.0.2.0 Production on Mon Oct 22 05:24:44 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> 
Commit complete.
SQL> 
  STUID STUNAME
---------- --------------------------------------------------
  1001 liumiaocn
  1003 michael
SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
oracle@e871d42341c0:~$ 

可以看到錯誤信息全在標(biāo)準(zhǔn)輸出中,標(biāo)準(zhǔn)錯誤中沒有信息。

重定向標(biāo)準(zhǔn)輸出與錯誤判斷

雖然上述信息中可以看到,標(biāo)準(zhǔn)錯誤中沒有信息,這里給出的方案是對應(yīng)常見的控制臺方式的錯誤控制,為了保證標(biāo)準(zhǔn)錯誤的信息不被遺漏,需要將標(biāo)準(zhǔn)錯誤和重定向到標(biāo)準(zhǔn)輸出中,在bshell中寫法如下:

>輸出文件名稱 2>&1

結(jié)合本文的例子,使用方式如下:

oracle@e871d42341c0:~$ sqlplus system/abcd1234@XE <<EOF >output.info 2>&1
> 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');
> commit;
> select * from student;
> EOF
oracle@e871d42341c0:~$ 
oracle@e871d42341c0:~$ cat output.info
SQL*Plus: Release 11.2.0.2.0 Production on Mon Oct 22 05:29:31 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> 
Commit complete.
SQL> 
  STUID STUNAME
---------- --------------------------------------------------
  1001 liumiaocn
  1003 michael
SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
oracle@e871d42341c0:~$

結(jié)果判斷

使用grep確認(rèn)是否存在ORA-相關(guān)的信息即可

oracle@e871d42341c0:~$ grep ORA- output.info
ORA-00001: unique constraint (SYSTEM.SYS_C007024) violated
oracle@e871d42341c0:~$ echo $?
0
oracle@e871d42341c0:~$

總結(jié)

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

相關(guān)文章

  • Oracle 輕量級實時監(jiān)控工具 oratop詳解

    Oracle 輕量級實時監(jiān)控工具 oratop詳解

    這篇文章主要介紹了Oracle 輕量級實時監(jiān)控工具 oratop,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 連接Oracle數(shù)據(jù)庫時報ORA-12541:TNS:無監(jiān)聽程序的圖文解決教程

    連接Oracle數(shù)據(jù)庫時報ORA-12541:TNS:無監(jiān)聽程序的圖文解決教程

    這篇文章主要介紹了連接Oracle數(shù)據(jù)庫時報ORA-12541:TNS:無監(jiān)聽程序的圖文解決教程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • Oracle系統(tǒng)表外鍵的更名

    Oracle系統(tǒng)表外鍵的更名

    Oracle系統(tǒng)表外鍵的更名...
    2007-03-03
  • centos 6.5下安裝oracle 11gR2與Oracle自動啟動的配置

    centos 6.5下安裝oracle 11gR2與Oracle自動啟動的配置

    CentOS 下安裝 Oracle 是一件比較麻煩的事情,下面這篇文章主要介紹了在 centos 6.5下安裝oracle 11gR2的前的配置步驟,以及安裝完成后,如何設(shè)置為隨系統(tǒng)自動啟動。配置完成后,啟動圖形化安裝,沒有什么可說的,本文就沒有一一截圖。需要的朋友可以參考借鑒。
    2017-01-01
  • oracle數(shù)據(jù)庫遷移到MySQL的方法總結(jié)

    oracle數(shù)據(jù)庫遷移到MySQL的方法總結(jié)

    本文主要總結(jié)了oracle數(shù)據(jù)庫遷移到MySQL的方法,方法包括手動方式導(dǎo)入導(dǎo)出、使用工具Navicat 進行導(dǎo)入、使用工具DBMover 的OracleToMySQL 進行導(dǎo)入和使用工具intelligent-converters 的 oracle-to-mysql 進行導(dǎo)入,需要的朋友可以參考下。
    2017-03-03
  • Oracle?處理json數(shù)據(jù)的方法

    Oracle?處理json數(shù)據(jù)的方法

    Json數(shù)據(jù)一般使用varchar2(400),varchar2(32676)或者BLOB來存儲Json數(shù)據(jù),這篇文章主要介紹了Oracle?處理json數(shù)據(jù)的相關(guān)知識,需要的朋友可以參考下
    2022-11-11
  • sqlplus登錄\連接命令、sqlplus命令的使用大全

    sqlplus登錄\連接命令、sqlplus命令的使用大全

    Oracle的sql*plus是與oracle進行交互的客戶端工具。在sqlplus中,可以運行sqlplus命令與sqlplus語句
    2013-08-08
  • Oracle刪除表前判斷表名是否存在若存在則刪除

    Oracle刪除表前判斷表名是否存在若存在則刪除

    在Oracle中若刪除一個不存在的表則會提示表或視圖不存在,這就需要我們再刪除表前判斷該表是否存在,若存在則刪除,感興趣的朋友可以了解下本文
    2013-11-11
  • 解決Oracle模擬事務(wù)提交、表鎖,處理表鎖問題

    解決Oracle模擬事務(wù)提交、表鎖,處理表鎖問題

    這篇文章主要介紹了Oracle模擬事務(wù)提交、表鎖,處理表鎖問題,通過可視化工具navicat執(zhí)行插入語句,發(fā)現(xiàn)雖然我們設(shè)置了不自動提交,這里還是插入成功了,這里給大家介紹下手動提交事務(wù)流程,需要的朋友可以參考下
    2022-09-09
  • oracle分區(qū)表之hash分區(qū)表的使用及擴展

    oracle分區(qū)表之hash分區(qū)表的使用及擴展

    Hash分區(qū)是Oracle實現(xiàn)表分區(qū)的三種基本分區(qū)方式之一。對于那些無法有效劃分分區(qū)范圍的大表,或者出于某些特殊考慮的設(shè)計,需要使用Hash分區(qū),下面介紹使用方法
    2014-01-01

最新評論

兴安盟| 辉南县| 绥中县| 偃师市| 淅川县| 深水埗区| 商南县| 临西县| 徐闻县| 嘉峪关市| 海伦市| 宁强县| 石景山区| 旬阳县| 长海县| 溧水县| 石嘴山市| 罗甸县| 枣强县| 塔城市| 河东区| 桂平市| 北辰区| 龙门县| 东丰县| 健康| 延川县| 麦盖提县| 麻城市| 韶关市| 珲春市| 凯里市| 达尔| 正蓝旗| 卢氏县| 乌什县| 乡城县| 四平市| 光山县| 西昌市| 金秀|