亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 8609 | 回復(fù): 16
打印 上一主題 下一主題

請(qǐng)教: sh調(diào)用sqlplus,如何獲取sqlcode? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-09-22 10:07 |只看該作者 |倒序?yàn)g覽
編寫(xiě)一個(gè)腳本,查詢(xún)數(shù)據(jù)庫(kù)并獲取信息,然后根據(jù)信息做判斷
現(xiàn)在問(wèn)題是如果查詢(xún)時(shí)的庫(kù)表不存在之類(lèi)的數(shù)據(jù)庫(kù)出錯(cuò)信息不知道如何獲。

sh如下:
VALUE=`sqlplus -S $USRPWD <<EOF
set heading off feedback off pagesize 0 verify off echo off numwidth 4
    select col_1 from table_a where col_2='111' ;
exit
EOF`

if [ "$VALUE" = "XX" ] ----這里會(huì)有問(wèn)題,$VALUE 可能是數(shù)據(jù)庫(kù)的出錯(cuò)信息。如果判斷是庫(kù)表出錯(cuò)還是查詢(xún)?nèi)〕龅慕Y(jié)果?

謝謝~。

論壇徽章:
1
數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-01-24 06:20:00
2 [報(bào)告]
發(fā)表于 2009-09-22 11:04 |只看該作者
可以考慮看看VALUE變量里面是否含有匹配/^ORA-[0-9]\{5\}/(正則怎么合適怎么寫(xiě),不需要這么死板,或者還可以限制得更嚴(yán)一點(diǎn)),如果匹配的話,就意味著前面的腳本有錯(cuò)。

還有種方法可能比較繁瑣,寫(xiě)plsql,利用nds來(lái)避免因表不存在而引起的編譯錯(cuò)誤:

  1. declare
  2.     v_var1 varchar2(20);
  3.     v_cnt number;
  4. begin
  5.     select count(*) into v_cnt from user_tables where table_name='TABLE_A';
  6.     if v_cnt =1 then
  7.       execute immediate 'select col_1 into v_var1 from table_a where col_2=''111''';
  8.     else
  9.       dbms_output.put_line('Table does not exist.'); -- 表不存在的情況下在這里可以決定怎么處理可以讓后續(xù)的shell腳本更好判斷問(wèn)題,當(dāng)然如果用dbms_output.put_line的話,前面sqlplus的設(shè)置還需要set serveroutput on
  10.     end if;
  11. exception
  12.     when others then
  13.       dbms_output.put_line(sqlerrm);
  14. end;
  15. /
復(fù)制代碼

[ 本帖最后由 Minsic 于 2009-9-22 11:14 編輯 ]

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2009-09-22 16:23 |只看該作者
用了簡(jiǎn)單的方法:

VALUE=`sqlplus -S $USRPWD <<EOF
set heading off feedback off pagesize 0 verify off echo off numwidth 4
select col_1 from table where col_2='xxx';
exit
EOF`

yy=`echo $VALUE|cut -c 1-6`

if [ "$yy" = "select" ]  ------------------------如果表不存在等數(shù)據(jù)庫(kù)錯(cuò)誤,錯(cuò)誤信息以sql開(kāi)頭.所以如果select打頭就當(dāng)出錯(cuò)
then
     。。。。
else
    if [ "$VALUE" = "" ] ------------------------未找到匹配的記錄

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2009-09-22 16:25 |只看該作者
謝謝 Minsic  
:)

論壇徽章:
1
數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-01-24 06:20:00
5 [報(bào)告]
發(fā)表于 2009-09-22 17:30 |只看該作者

回復(fù) #4 yangdon323 的帖子

不客氣

只是如果取select開(kāi)頭就錯(cuò)誤,處理這個(gè)特定的例子特定的錯(cuò)誤可能沒(méi)問(wèn)題,我個(gè)人覺(jué)得還是找一個(gè)合適的正則來(lái)匹配比較合適。

論壇徽章:
7
酉雞
日期:2013-10-30 17:17:51水瓶座
日期:2014-01-25 14:47:21天秤座
日期:2014-02-20 09:49:50處女座
日期:2014-11-04 17:44:082015年亞洲杯之中國(guó)
日期:2015-03-09 17:21:312015亞冠之北京國(guó)安
日期:2015-06-01 16:58:552015亞冠之山東魯能
日期:2015-06-19 11:30:08
6 [報(bào)告]
發(fā)表于 2009-09-23 20:27 |只看該作者
也可以這么做:

  1. sqlplus /nolog <<EOF
  2. connect user/pass;
  3. whenever sqlerror exit sql.sqlcode;
  4. select * from tab;
  5. EOF
復(fù)制代碼

然后檢查$?來(lái)判斷表是否存在。

論壇徽章:
1
數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-01-24 06:20:00
7 [報(bào)告]
發(fā)表于 2009-09-24 16:07 |只看該作者

回復(fù) #6 syncpk99 的帖子

sqlplus原來(lái)還有whenever命令,受益匪淺,感謝樓上的。

趕緊去查了下sqlplus user guide,發(fā)現(xiàn)不止有whenever sqlerror,甚至還有whenever oserror,以后寫(xiě)類(lèi)似的腳本又多了一種很好的選擇,再次感謝

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2009-09-24 16:30 |只看該作者
sqlplus /nolog > /dev/null  <<EOF
connect bill0/bill0a@telf;
whenever sqlerror exit 1;
EOF

我用戶(hù)名密碼是bill0a/bill0a

我這里echo $?顯示的總是0呢?

幫忙看看我哪寫(xiě)的不對(duì)呢

論壇徽章:
1
數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-01-24 06:20:00
9 [報(bào)告]
發(fā)表于 2009-09-24 16:39 |只看該作者

回復(fù) #8 ghostgorst 的帖子

里面的兩句反了

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2009-09-24 16:41 |只看該作者

回復(fù) #9 Minsic 的帖子

:wink: 沒(méi)看明白
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP