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

首頁 > 數據庫 > Oracle > 正文

Oracle基礎:通過sqlplus執行sql語句后的結果進行判斷

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

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

環境準備

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

常見問題

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

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

解決方式

腳本調用里,解決方式如下

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

執行結果判斷示例

這里使用命令行的方式進行驗證,直接拷貝到腳本中即可以使用腳本的方式與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;> EOFSQL*Plus: Release 11.2.0.2.0 Production on Mon Oct 22 05:18:51 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> 3 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> Commit complete.SQL>   STUID STUNAME---------- --------------------------------------------------  1001 liumiaocn  1003 michaelSQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionoracle@e871d42341c0:~$ echo $?0oracle@e871d42341c0:~$

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

輸出信息

輸出分為標準輸出和標準錯誤兩種,輸入輸出的FD分別為:

  • 標準輸入:0
  • 標準輸出:1
  • 標準錯誤:2

接下來我們看一下上文中的信息那些是標準輸出,哪些是標準錯誤:

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;> EOForacle@e871d42341c0:~$ oracle@e871d42341c0:~$ cat output.errororacle@e871d42341c0:~$ oracle@e871d42341c0:~$ cat output.infoSQL*Plus: Release 11.2.0.2.0 Production on Mon Oct 22 05:24:44 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> Commit complete.SQL>   STUID STUNAME---------- --------------------------------------------------  1001 liumiaocn  1003 michaelSQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionoracle@e871d42341c0:~$ 

可以看到錯誤信息全在標準輸出中,標準錯誤中沒有信息。

重定向標準輸出與錯誤判斷

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

>輸出文件名稱 2>&1

結合本文的例子,使用方式如下:

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;> EOForacle@e871d42341c0:~$ oracle@e871d42341c0:~$ cat output.infoSQL*Plus: Release 11.2.0.2.0 Production on Mon Oct 22 05:29:31 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> Commit complete.SQL>   STUID STUNAME---------- --------------------------------------------------  1001 liumiaocn  1003 michaelSQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionoracle@e871d42341c0:~$

結果判斷

使用grep確認是否存在ORA-相關的信息即可

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

總結

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


注:相關教程知識閱讀請移步到oracle教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产亚洲视频| 欧美激情va永久在线播放| 91探花福利精品国产自产在线| 日韩成人av在线播放| 亚洲国产一区二区三区四区| 国产精品免费视频久久久| 2021久久精品国产99国产精品| 国产成一区二区| 亚洲人成在线播放| 久久久久免费视频| 亚洲精品欧美日韩专区| 26uuu国产精品视频| 中文字幕日本欧美| 成人午夜激情网| 色婷婷久久一区二区| 久操成人在线视频| 久久久久久久久久久91| 久久精品国产视频| 丝袜亚洲欧美日韩综合| 日韩美女视频免费在线观看| 亚洲在线www| 午夜精品一区二区三区在线| 92国产精品久久久久首页| 97在线观看免费| 中文字幕亚洲专区| 92看片淫黄大片看国产片| 亚洲精品电影在线观看| 琪琪第一精品导航| 欧美精品福利视频| 欧美性xxxx18| 日日狠狠久久偷偷四色综合免费| 欧美午夜www高清视频| 日本不卡高字幕在线2019| 日本一区二区不卡| 亚洲影院高清在线| 亚洲аv电影天堂网| 国产精品久久久久久一区二区| 欧美日韩中文字幕综合视频| 亚洲一区二区三区香蕉| 91美女片黄在线观看游戏| 欧美成人午夜剧场免费观看| 欧美性xxxx极品hd欧美风情| 欧美电影在线免费观看网站| 精品人伦一区二区三区蜜桃网站| 欧美第一淫aaasss性| 亚洲国产精品va在线看黑人动漫| 日韩精品小视频| 91国产精品视频在线| 国产精品久久国产精品99gif| 国产精品久久一区| 中文字幕无线精品亚洲乱码一区| 伦理中文字幕亚洲| 亚洲精品视频二区| 国内揄拍国内精品少妇国语| 亚洲v日韩v综合v精品v| 中文字幕亚洲在线| 欧美在线视频一二三| 2019精品视频| 91久久精品国产91久久性色| 国产日韩欧美影视| 亚洲欧美激情视频| 亚洲色图欧美制服丝袜另类第一页| 久久久精品视频在线观看| 久久精视频免费在线久久完整在线看| 亚洲综合在线中文字幕| 亚洲欧美精品suv| 久久成人精品视频| 日韩欧美高清在线视频| 亚洲国产精品va在线看黑人动漫| 国产精品日韩欧美| 久久久成人的性感天堂| 国产精品爽爽ⅴa在线观看| 精品亚洲男同gayvideo网站| 久久国产精品免费视频| 久久久久在线观看| 欧美午夜精品久久久久久浪潮| 中文字幕综合一区| 日本成人激情视频| 亚洲sss综合天堂久久| 久久视频在线播放| 日韩av手机在线观看| 欧美一级在线播放| 国产成人高潮免费观看精品| 亚洲美女久久久| 不卡av电影在线观看| 岛国av一区二区三区| 欧美另类老肥妇| 久久国产精品亚洲| 国产精品av在线| 91九色精品视频| 国产自产女人91一区在线观看| 欧美激情手机在线视频| 久久久免费精品| 亚洲一区亚洲二区亚洲三区| 一区二区三区四区在线观看视频| 亚洲国产日韩欧美在线99| 一区二区三区在线播放欧美| 国产日产欧美精品| 欧美精品在线极品| 欧美日韩xxxxx| 亚洲自拍偷拍网址| 中文字幕精品一区二区精品| 欧美裸体xxxxx| 亚洲激情视频在线| 成人黄色网免费| 国产精品爱久久久久久久| 午夜精品福利在线观看| 国产美女高潮久久白浆| 欧美成人精品一区| 日韩av中文字幕在线| 亲爱的老师9免费观看全集电视剧| 亚洲日韩中文字幕| 亚洲性视频网址| 欧美精品国产精品日韩精品| 国产精品电影久久久久电影网| 亚洲精品一区在线观看香蕉| 日韩在线视频一区| 亚洲人永久免费| 国产欧美最新羞羞视频在线观看| 中文字幕久久精品| 亚洲韩国青草视频| 97色在线观看| 中文字幕亚洲无线码在线一区| 中文字幕亚洲欧美一区二区三区| 一本一本久久a久久精品综合小说| 91亚洲精品视频| 国产精品久久久久久久9999| 国产精品久久久久久av福利软件| 久久久成人精品| 亚洲免费精彩视频| 欧美成在线观看| 亚洲精品综合精品自拍| 最近2019中文字幕在线高清| 久久精品视频中文字幕| 色噜噜狠狠狠综合曰曰曰88av| 日韩中文第一页| 国产精品综合网站| 精品网站999www| 91免费国产视频| 尤物yw午夜国产精品视频明星| 欧美理论电影在线观看| 国产欧美精品在线| 国产精品18久久久久久麻辣| 久久在线视频在线| 欧美精品电影免费在线观看| 1769国产精品| 成人午夜高潮视频| 亚洲人成网站色ww在线| 视频一区视频二区国产精品| 亚洲人成网站免费播放| 亚洲精品视频在线播放| 成人免费视频在线观看超级碰| 欧美在线视频一区二区| 国产日韩av在线播放| 91国内精品久久| 国产99久久久欧美黑人| 国产成人精品视频在线观看| 超碰97人人做人人爱少妇| 欧美裸身视频免费观看| 久久精品影视伊人网| 亚洲xxxxx| 午夜免费久久久久| 91爱视频在线| 中文字幕在线视频日韩|