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

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle查詢sql錯(cuò)誤信息的控制和定位

2024-08-29 14:01:26
字體:
供稿:網(wǎng)友

在sqlplus中執(zhí)行的sql出錯(cuò)之后應(yīng)該如何處理和對(duì)應(yīng),多行sql語句或者存儲(chǔ)過程的信息如何進(jìn)行錯(cuò)誤定位,這篇文章將結(jié)合實(shí)例進(jìn)行簡單地說明。

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

使用Oracle的精簡版創(chuàng)建docker方式的demo環(huán)境

如何進(jìn)行錯(cuò)誤定位

場景:

假如有3行insert的sql語句,中間一行出錯(cuò)之后,后續(xù)繼續(xù)執(zhí)行的情況下,如何定位到第二行?

dbms_utility.format_error_backtrace

通過使用dbms_utility.format_error_backtrace可以得到ERROR at line xxx:的信息,這對(duì)我們較為有用,我們接下來進(jìn)行確認(rèn)

oracle@e871d42341c0:~$ sqlplus system/abcd1234@XE <<EOF> SET SERVEROUTPUT ON> 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;> exec dbms_output.put_line(dbms_utility.format_error_backtrace);> EOFSQL*Plus: Release 11.2.0.2.0 Production on Sun Oct 21 13:06:07 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) violatedSQL> 1 row created.SQL>    STUID STUNAME---------- --------------------------------------------------   1001 liumiaocn   1003 michaelSQL> Commit complete.SQL> PL/SQL procedure successfully completed.SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionoracle@e871d42341c0:~$ 

可以看到,報(bào)錯(cuò)的時(shí)候提示了行號(hào),但是行號(hào)是1,這是因?yàn)檫@種寫法以一行為單位,自然是如此,如果是單個(gè)多行的存儲(chǔ)過程,將會(huì)更加清晰。

ERROR at line 1:ORA-00001: unique constraint (SYSTEM.SYS_C007024) violated

所以我們將這個(gè)例子進(jìn)行改造,三行insert的sql放到文件之中,然后在使用dbms_utility.format_error_backtrace來進(jìn)行確認(rèn)

oracle@e871d42341c0:~$ cat /tmp/sqltest1.sql desc 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;oracle@e871d42341c0:~$

然后在嘗試一下是否能夠確認(rèn)行號(hào),會(huì)發(fā)現(xiàn)仍然不能精確定位:

 

oracle@e871d42341c0:~$ sqlplus system/abcd1234@XE <<EOF> SET SERVEROUTPUT ON> @/tmp/sqltest1.sql> exec dbms_output.put_line(dbms_utility.format_error_backtrace);> EOFSQL*Plus: Release 11.2.0.2.0 Production on Sun Oct 21 13:08:27 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)2 rows deleted.no rows selected1 row created.insert into student values (1001, 'liumiao')*ERROR at line 1:ORA-00001: unique constraint (SYSTEM.SYS_C007024) violated1 row created.   STUID STUNAME---------- --------------------------------------------------   1001 liumiaocn   1003 michaelCommit complete.SQL> PL/SQL procedure successfully completed.SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionoracle@e871d42341c0:~$ 

因?yàn)閐bms_utility.format_error_backtrace更多的場景是在于存儲(chǔ)過程的錯(cuò)誤定位,接下來我們使用一個(gè)簡單的存儲(chǔ)過程例子來進(jìn)行確認(rèn)錯(cuò)誤行號(hào)定位, 先看一個(gè)正常的存儲(chǔ)過程,把上面的內(nèi)容稍微修改一下:

oracle@e871d42341c0:~$ cat /tmp/addstudent.sql create or replace PROCEDURE addstudentsISstudent_count number;BEGINdelete from student;select count(*) into student_count from student;dbms_output.put('sql set count before :');dbms_output.put_line(student_count);insert into student values (1001, 'liumiaocn');insert into student values (1002, 'liumiao');insert into student values (1003, 'michael');select count(*) into student_count from student;dbms_output.put('sql set count after :');dbms_output.put_line(student_count);END;/exec addstudents();oracle@e871d42341c0:~$

結(jié)果執(zhí)行信息如下

oracle@e871d42341c0:~$ sqlplus system/liumiao123 <<EOFset serveroutput on;@/tmp/addstudent.sql EOFSQL*Plus: Release 11.2.0.2.0 Production on Mon Oct 22 04:42:11 2018Copyright (c) 1982, 2011, Oracle. All rights reserved.Connected to:Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit ProductionSQL> SQL> Procedure created.sql set count before :0sql set count after :3PL/SQL procedure successfully completed.SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionoracle@e871d42341c0:~$ 

接下來我們修改一下內(nèi)容,使得第二行主鍵重復(fù)

oracle@e871d42341c0:~$ cat /tmp/addstudent.sqlcreate or replace PROCEDURE addstudentsISstudent_count number;BEGINdelete from student;select count(*) into student_count from student;dbms_output.put('sql set count before :');dbms_output.put_line(student_count);insert into student values (1001, 'liumiaocn');insert into student values (1001, 'liumiao');insert into student values (1003, 'michael');select count(*) into student_count from student;dbms_output.put('sql set count after :');dbms_output.put_line(student_count);END;/exec addstudents();oracle@e871d42341c0:~$ 

再次執(zhí)行,自然會(huì)出錯(cuò),但是可以看到,正確報(bào)出了所在行數(shù),這是procedure的機(jī)制提示的信息

oracle@e871d42341c0:~$ sqlplus system/liumiao123 <<EOFset serveroutput on;@/tmp/addstudent.sql EOFSQL*Plus: Release 11.2.0.2.0 Production on Mon Oct 22 04:44:25 2018Copyright (c) 1982, 2011, Oracle. All rights reserved.Connected to:Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit ProductionSQL> SQL> Procedure created.sql set count before :0BEGIN addstudents(); END;*ERROR at line 1:ORA-00001: unique constraint (SYSTEM.SYS_C007024) violatedORA-06512: at "SYSTEM.ADDSTUDENTS", line 10ORA-06512: at line 1SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionoracle@e871d42341c0:~$

可以看到,ORA-06512: at “SYSTEM.ADDSTUDENTS”, line 10的信息就是我們期待的信息,提示出在這個(gè)存儲(chǔ)過程的第10行執(zhí)行出現(xiàn)問題,而實(shí)際可以使用dbms_utility.format_error_backtrace結(jié)合exception給出更為清晰地方式,比如:

oracle@e871d42341c0:~$ cat /tmp/addstudent.sql create or replace PROCEDURE addstudentsISstudent_count number;BEGINdelete from student;select count(*) into student_count from student;dbms_output.put('sql set count before :');dbms_output.put_line(student_count);insert into student values (1001, 'liumiaocn');insert into student values (1001, 'liumiao');insert into student values (1003, 'michael');select count(*) into student_count from student;dbms_output.put('sql set count after :');dbms_output.put_line(student_count);exceptionwhen others thendbms_output.put('exception happend with line info : ');dbms_output.put_line(dbms_utility.format_error_backtrace);END;/exec addstudents();oracle@e871d42341c0:~$

執(zhí)行結(jié)果確認(rèn):

oracle@e871d42341c0:~$ sqlplus system/liumiao123 <<EOFset serveroutput on;@/tmp/addstudent.sql EOFSQL*Plus: Release 11.2.0.2.0 Production on Mon Oct 22 04:49:27 2018Copyright (c) 1982, 2011, Oracle. All rights reserved.Connected to:Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit ProductionSQL> SQL> Procedure created.sql set count before :0exception happend with line info : ORA-06512: at "SYSTEM.ADDSTUDENTS", line 10PL/SQL procedure successfully completed.SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionoracle@e871d42341c0:~$ 

這樣則可以看出能夠比較清晰地進(jìn)行錯(cuò)誤的定位了,但是由于功能受限,所以實(shí)際使用場景仍然較為有限,但是定位存儲(chǔ)過程的信息則可以使用dbms_utility.format_error_backtrace等進(jìn)行確認(rèn)。

小結(jié)

多行sql執(zhí)行定位可以考慮拆成單行來確認(rèn),而存儲(chǔ)過程則可結(jié)合format_error_backtrace等進(jìn)行確認(rèn)以提供問題出現(xiàn)的所在行號(hào)。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到oracle教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国内精品视频一区| 日韩精品中文字幕在线观看| 日韩精品一区二区三区色偷偷| 中日韩男男gay无套| 亚洲国产成人精品女人| 色婷婷av一区二区三区大白胸| 欧美成人aaa| 国产亚洲精品一区二区在线观看| 韩国一区二区三区四区| 奇米亚洲午夜久久精品| 在线观看黄色网| 日本精品视频一区二区三区| 国产女主播视频一区二区| 亚洲成人av网址| 欧美中文字幕第一页| 久久综合影视| 色妞色视频一区二区三区四区| 久久综合久久综合久久综合| 欧美xxx黑人xxx水蜜桃| 成人小视频免费在线观看| 午夜精品久久99蜜桃的功能介绍| 一级二级黄色片| 欧美风情第一页| 激情偷乱视频一区二区三区| 成人欧美亚洲| 亚洲日本乱码在线观看| 国产女主播自拍| 高清乱码毛片入口| 韩国毛片一区二区三区| 国产精品高潮呻吟久久av无限| 欧美乱大交xxxxx潮喷l头像| 欧美日韩国产一区在线| 欧美性大战久久久久xxx| 日韩在线观看一区二区三区| 亚洲婷婷丁香| 欧美图片自拍偷拍| 亚洲第一网站男人都懂| 亚洲图片视频小说| 精品视频黄色| 嫩草影院中文字幕| 国内自拍视频在线看免费观看| 波多野结衣欧美| 99久久人爽人人添人人澡| 国产亚洲欧美日韩日本| 99re66热这里只有精品4| 色狼人综合干| 91无套直看片红桃在线观看| 不卡av影片| 多人啪嗒啪嗒在线观看免费| 久草中文综合在线| 青青草国产精品| 欧美成人一二区| 无码一区二区三区在线| 伊人永久在线| 四虎成人免费影院| 亚洲精品国产手机| 欧美破处大片在线视频| 国产精品免费看久久久香蕉| 97色成人综合网站| 国产黄色av免费看| 日本黄色一级视频| 在线视频一区二区| 欧美在线观看日本一区| 翔田千里一区二在线观看| www.日本xxxx| 99久久婷婷国产精品综合| 欧美三级日本三级少妇99| 亚洲黄色毛片| 午夜一区二区三区在线观看| 日韩av新片网| 无码人妻一区二区三区线| 99精品视频在线播放免费| 日本a级黄色| 男人天堂视频在线| 国产激情av在线| 都市激情综合| 青青草97国产精品免费观看| 免费看片黄色| a视频在线免费看| 在线视频亚洲一区| 羞羞视频网站在线观看| 成人全视频在线观看在线播放高清| 亚洲视频 欧洲视频| 日韩黄色大片网站| 无码人妻精品一区二区三应用大全| www.久久久久| 国产高清精品在线| 国产精品视频一二区| 日韩在线观看免费全集电视剧网站| 欧美成人小视频| 日本午夜一区二区三区| 国产又黄又爽又无遮挡| 小毛片在线观看| 国精品人伦一区二区三区蜜桃| 亚洲综合极品香蕉久久网| 日本韩国在线观看| 久久国产波多野结衣| av网址在线观看免费| 一区二区三区欧美在线观看| 日本激情视频一区二区三区| 久久久综合精品| 福利电影一区| 亚洲天天综合网| 99国产精品视频免费观看一公开| 久久精品一区二区三| 特黄aaaaaaaaa真人毛片| 美女主播视频一区| 精品freesex老太交| 精品肉辣文txt下载| 欧美第一页浮力影院| 免费电影网站在线视频观看福利| 人人澡人人添人人爽一区二区| 伊人久久成人| 亚洲国产精品人人爽夜夜爽| 色婷婷在线播放| 特种兵之深入敌后| 男人日女人网站| 久久久免费观看视频| 成人一二三区| 一区二区三区高清在线| 91精品免费久久久久久久久| 久久久久一区二区| 欧美天堂亚洲电影院在线观看| 天堂影院在线| 香港三日本8a三级少妇三级99| 一级片a一级片| 国产精品臀控福利在线观看| 色噜噜一区二区三区| 国产性生活大片| 国产乱人伦精品一区二区| 亚洲精品喷潮一区二区三区| 亚洲www永久成人夜色| 亚洲第一中文av| 国产在线成人精品午夜| 日韩精品一区国产| 日韩电影免费观看在线观看| 久热中文字幕在线精品免费| 免费观看成年人视频| 阿v天堂2014| 综合久久综合| 国产97人人超碰caoprom| 欧美aaa一级片| 深夜福利av| 国产乱国产乱老熟| 国产v综合v| 亚洲精品欧美日韩| 欧美激情精品久久久久| 麻豆精品视频在线观看视频| 麻豆一区二区三区视频| www五月婷婷| 红桃视频亚洲| 国产伦精品一区二区三区免费优势| av综合在线播放| 国产精品精品久久久| 国内精品伊人久久久久影院对白| 玩弄中年熟妇正在播放| 欧洲成人在线观看| 亚洲毛片播放| 日韩高清av在线| 涩涩视频免费看| 完美搭档在线观看| 欧美日产国产成人免费图片| 狠狠狠狠狠狠操| 国产精品va在线播放我和闺蜜| 久久美女性网| 最近最好的中文字幕2019免费| 中文字幕1234区| 成人精品福利视频| 日本精品人妻无码77777| 污导航在线观看| 欧美激情在线狂野欧美精品| 国产视频一区二区三区在线播放| 国产精品久久中文| 91网页在线观看| 国产农村妇女aaaaa视频| 亚洲高清免费观看| 国产精品51麻豆cm传媒| 日韩av激情| 欧美日韩在线资源| 人人影院免费大片| 国产精品www在线观看| 日韩美女精品| 日韩高清三区| 欧美一区二区日韩一区二区| 国产9色视频| 中日韩精品视频在线观看| 国产美女免费看| av激情成人网| 久久99久久亚洲国产| 欧美一区2区| 婷婷综合成人| 黄色的网站免费| 成人午夜电影免费在线观看| 一区二区视频免费在线观看| 欧美另类高清videos的特点| 日本一区精品| 中文字幕专区| 天天操天天射天天舔| 日韩亚洲欧美精品| 国产精品中文字幕亚洲欧美| 中文乱码免费一区二区三区下载| 99精品国产一区二区青青牛奶| 国产亚洲精品综合一区91| 亚洲人成高清| 欧美日韩在线视频免费观看| 99精品视频中文字幕| 国产传媒一区二区三区| 国产无遮挡又黄又爽| 精品国产91乱码一区二区三区| 欧美日韩另类字幕中文| 香蕉视频一区二区三区| 免费精品一区| 美女做爰内谢全过程视频| 日韩电影视频免费| 精品一区二区三区蜜桃在线| 成人在线播放av| 美女高潮在线观看| 日本一区二区三区视频免费看| 精品人妻一区二区三区三区四区| 软萌小仙自慰喷白浆| 亚洲人成在线观看| 亚洲 日本 欧美 中文幕| 免费网站黄在线观看| 欧美亚洲国产另类| 色先锋aa成人| 免费人成视频在线播放| 99热播在线观看| 国产亚洲在线| 羞羞电影在线观看www| 国产视频久久久| 国产毛片一区二区三区| 成人亚洲一区二区一| 久久成人综合网| 日本特黄a级高清免费大片| 在线播放视频一区| 在线免费看h| 国产成人精品毛片| 中文字幕日韩精品有码视频| 最新精品视频在线| 久久精品三级| www.com国产| 在线免费视频你懂得| 中国视频免男男gay| 怡红院男人的天堂| 亚洲女人天堂视频| 色悠久久久久综合网小说| 最新亚洲激情| 老司机在线视频二区| …久久精品99久久香蕉国产| www.在线视频.com| 日韩毛片免费视频一级特黄| 久热国产精品视频一区二区三区| 亚洲六月丁香色婷婷综合久久| 国产精品视频网站| 漫画在线观看av| 成人三级视频在线观看一区二区| 亚洲黄色www| 日批视频在线免费看| 新67194成人永久网站| 国产普通话bbwbbwbbw| 欧美三级一区二区三区| 7777精品久久久大香线蕉小说| 高清乱码毛片入口| 另类的小说在线视频另类成人小视频在线| 男人添女人荫蒂免费视频| 亚洲精品高潮| 福利小视频在线观看| 国产69精品久久777的优势| 欧美一区二区三区影院| 国产精品免费不| 肉体视频在线| 2020天天干夜夜爽| 蜜桃一区二区三区四区| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲第一se情网站| 大伊香蕉精品视频在线| 成人午夜一级| baoyu135国产精品免费| 国产欧美日韩综合精品一区二区三区| 精品久久久久久久久久久久包黑料| 99视频精品免费视频| 亚洲图片在线| 国产又大又黄又粗| 在线播放精品视频| 欧亚洲嫩模精品一区三区| 国产精品最新在线观看| 久久99国产精一区二区三区| 国产一卡二卡3卡4卡四卡在线| 亚洲乱码在线| 99精品国产在热久久婷婷| 永久免费无码av网站在线观看| 91国内精品久久| xf在线a精品一区二区视频网站| 五月精品视频| 国产极品视频在线观看| 在线视频 日韩| 欧美一区二区不卡视频| 午夜免费视频网站| 亚洲精品91天天久久人人| 欧美一区二区三区久久综合| 日本簧片在线观看| 国产大片在线免费观看| 国产一区不卡在线| 成人在线不卡| 巨胸喷奶水www久久久免费动漫| 美女在线观看视频一区二区| 91视频国产精品| 91丨porny丨在线| 二区三区偷拍浴室洗澡视频| 国产精品亲子乱子伦xxxx裸| 久久久人成影片一区二区三区| 欧美日韩一本| 来吧亚洲综合网| 蜜桃视频一区二区| 最猛黑人系列在线播放| 欧美极品jizzhd欧美18| 亚洲一区二区三区四区五区xx| 久久久久九九九九| 97超碰色婷婷| 国内精品一区视频| 亚洲影院中文字幕| 久久影院中文字幕| 亚洲一区二区免费看| 亚洲一区二区三区毛片| 亚洲精品孕妇| 不卡av一区二区| 亚洲第一综合天堂另类专| 天天操中文字幕|