请问下shell调度sql中这种错误如何捕获

[复制链接]
查看11 | 回复6 | 2013-2-25 14:51:24 | 显示全部楼层 |阅读模式
程序使用shell包一个sqlplus
比方说写
de lete from a ;
会报下面的
SP2-0734: unknown command beginning "de lete fr..." - rest of line ignored.
这样的如何捕获?


回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
一般是将输出写在一个log里面,然后退出sqlplus进行分析,根据结果再决定是退出,还是再进入sqlplus继续操作。
比如:
JOBLOG=/tmp/ORA_JOBLOG.`date %Y%m%d%H%M%S`.$$
sqlplus / as sysdba > ${JOBLOG}
whenever sqloerr exit 1;
select ....
SQL
grep -c 'ORA-' ${JOBLOG}......
...
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
谢谢你热情的回答
根据我的理解,为了保证程序的逻辑性,当程序出现未知错误的时候,应该立即退出【目前我从事的etl工作确实需要这】
一般的情况使用whenever sqlerror exit1基本满足了要求
但是当语法的第一个关键字写错的情况下
报帖子中的sp错误,这种情况下whenever sqlerror exit1不起作用

回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
230039 发表于 2013-2-7 08:59
谢谢你热情的回答
根据我的理解,为了保证程序的逻辑性,当程序出现未知错误的时候,应该立即退出【目前我 ...

你竟然不点回复的。。。。。
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
230039 发表于 2013-2-7 08:59
谢谢你热情的回答
根据我的理解,为了保证程序的逻辑性,当程序出现未知错误的时候,应该立即退出【目前我 ...

这个自己要打手的,写脚本你能把delete写作,神也会无语的。whenever对sqlplus的错,是不管的,不会退出。写脚本自己检查拼写错误,木有办法。
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
mckingstar 发表于 2013-2-7 11:04
这个自己要打手的,写脚本你能把delete写作,神也会无语的。whenever对sqlplus的错,是不管的,不会退出。 ...

我是想写一个小程序,我自然做事比较认真,但是如果给同事推荐什么的,自然就过不了那一关了
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
230039 发表于 2013-2-7 11:36
我是想写一个小程序,我自然做事比较认真,但是如果给同事推荐什么的,自然就过不了那一关了

有些确实没办法的,比如你要select,你写不对,那谁也没辙啊,你还自己用shell重写么?很危险滴
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行