免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5334 | 回复: 10
打印 上一主题 下一主题

在isql 和dbaccess中的SQL语句如何判断是否出错,如何捕捉? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-11 21:11 |只看该作者 |倒序浏览
最近我经常把一些数据导入的数据库中的多个表中,为了不多次敲命令,我就把多个装入命令写入一个命令中,如下所示
isql - -<<!
database mydbase;
load from tab1.unl insert into table1;
load from tab2.unl insert into table2;
load from tab3.unl insert into table3;
!
在执行这组命令中如果没有问题一切都好说。但中间如果有问题,比如tab2.unl有问题,则系统会跳过继续执行第三句。这个继续执行也是我所期望的,但是在执行完了之后,我如何知道我要执行的所有语句是否都已经成功执行?中间有的有错误我如何去捕捉?
这个问题已经困扰我好久了,请给予赐教。

论坛徽章:
0
2 [报告]
发表于 2003-02-11 22:50 |只看该作者

在isql 和dbaccess中的SQL语句如何判断是否出错,如何捕捉?

我曾用过:
$>;nohup ./runsql.sh

---runsql.sh----
dbaccess dbname load.sql

---load.sql---
load from tab1.unl insert into table1;
load from tab2.unl insert into table2;
load from tab3.unl insert into table3;


直接检查nohup.out 文件.
笨方法,见笑..

论坛徽章:
11
数据库技术版块每日发帖之星
日期:2016-06-25 06:20:00数据库技术版块每日发帖之星
日期:2016-06-24 06:20:00数据库技术版块每日发帖之星
日期:2016-05-03 06:20:00数据库技术版块每日发帖之星
日期:2016-04-21 06:20:00数据库技术版块每日发帖之星
日期:2016-01-23 06:20:00数据库技术版块每日发帖之星
日期:2015-12-03 06:20:00综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-19 06:20:00数据库技术版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2016-07-30 06:20:00
3 [报告]
发表于 2003-02-12 12:16 |只看该作者

在isql 和dbaccess中的SQL语句如何判断是否出错,如何捕捉?

也可以!

论坛徽章:
0
4 [报告]
发表于 2003-02-12 14:29 |只看该作者

在isql 和dbaccess中的SQL语句如何判断是否出错,如何捕捉?

谢谢 hero99zy , 谢谢 大梦,但这个方法只是把屏幕输出重新定向了一下而已,还有没有其他的方法?其他同志也可以把你们的想法拿出来讨论嘛。

论坛徽章:
0
5 [报告]
发表于 2003-02-12 14:53 |只看该作者

在isql 和dbaccess中的SQL语句如何判断是否出错,如何捕捉?

这样写的话,执行一有错就推出了吧?怎么还会往下执行呢?不明白!

论坛徽章:
0
6 [报告]
发表于 2003-02-12 15:04 |只看该作者

在isql 和dbaccess中的SQL语句如何判断是否出错,如何捕捉?

是会继续执行下去的,不要怀疑,我已经碰到了这种情况了。

论坛徽章:
0
7 [报告]
发表于 2003-02-12 15:16 |只看该作者

在isql 和dbaccess中的SQL语句如何判断是否出错,如何捕捉?

是会往下执行,我记错了。

这个问题可以用ESQL/C来实现:
把你要执行的内容写成一个SHELL文件,然后在ec里调用:
ok=system("sh youshell";

这样只要判断ok的值就可以知道你倒数据过程中有没有出错了,同时还可以利用定位日志方法来看具体错误出在那里。

论坛徽章:
0
8 [报告]
发表于 2003-02-12 15:31 |只看该作者

在isql 和dbaccess中的SQL语句如何判断是否出错,如何捕捉?

用SYSTEM方法应该不行吧?我在SHELL里面检测过我执行完语句的返回值是0。这条路好象不行啊?至于你说的用日志定位,请再说明白点好吗?

论坛徽章:
0
9 [报告]
发表于 2003-02-12 15:38 |只看该作者

在isql 和dbaccess中的SQL语句如何判断是否出错,如何捕捉?

请看我的测试结果:
----CCC---
#!/usr/bin/ksh
isql mydbs <<!
load from tab1.unl insert into table1;
!
if [ $? -eq 0 ]; then
    echo "0000000000"
else
    echo "1111111111"
fi

$>;CCC

  239: Could not insert new row - duplicate value in a UNIQUE INDEX column.

  847: Error in load file line 1.
Error in line 1
Near character position 37

0000000000
$>;

论坛徽章:
0
10 [报告]
发表于 2003-02-12 16:02 |只看该作者

在isql 和dbaccess中的SQL语句如何判断是否出错,如何捕捉?

isql没有试过,用dbaccess吧,肯定行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP