免费注册 查看新帖 |

Chinaunix

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

怎么判断一个sql执行的对和错啊 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-24 14:15 |只看该作者 |倒序浏览
$ORACLE_HOME/bin/sqlplus ${USER}/${PASSWORD}@${SID} <<EOF
set heading off
set feedback off
set serverout on
INSERT INTO BIZ_ACC_TRANSFER_DATA (DATA_TYPE, TRANSFER_TYPE,CREATE_DATE,FILE_NAME,BATCH_ID) VALUES (2,1,'$tmpdate','$filename','');
EOF

论坛徽章:
0
2 [报告]
发表于 2010-06-24 14:54 |只看该作者
没明白LZ意思,mysql的
[root@test0 otest]# /usr/local/mysql/bin/mysql -u root -p -e "use test;select * from  repl_test;"
Enter password:
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
|    5 |
|    6 |
|    7 |
|    8 |
|    9 |
|   15 |
|   15 |
|   16 |
+------+
[root@test0 otest]# /usr/local/mysql/bin/mysql -u root -p -e "use test;select * from  rep_test;"
Enter password:
ERROR 1146 (42S02) at line 1: Table 'test.rep_test' doesn't exist    #这样算执行SQL错误吗?
这个应该跟数据库本身有关吧,只是通过shell把错误抓出来而已?

论坛徽章:
0
3 [报告]
发表于 2010-06-24 14:57 |只看该作者
怎么给分啊

论坛徽章:
0
4 [报告]
发表于 2010-06-24 15:01 |只看该作者
判断一个sqlplus执行是否成功

论坛徽章:
0
5 [报告]
发表于 2010-06-24 15:04 |只看该作者
这样看看
[root@test0 otest]# /usr/local/mysql/bin/mysql -u root -p -e "use test;select * from  repl_test;"
Enter password:
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
|    5 |
|    6 |
|    7 |
|    8 |
|    9 |
|   15 |
|   15 |
|   16 |
+------+
[root@test0 otest]# echo $?
0
[root@test0 otest]# /usr/local/mysql/bin/mysql -u root -p -e "use test;select * from  rep_test;"
Enter password:
ERROR 1146 (42S02) at line 1: Table 'test.rep_test' doesn't exist
[root@test0 otest]# echo $?
1

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
6 [报告]
发表于 2010-06-24 20:38 |只看该作者
回复 3# chen_chen1212


点击回复贴右上角的“评分”按钮

论坛徽章:
0
7 [报告]
发表于 2010-06-25 09:32 |只看该作者

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2010-06-25 10:49 |只看该作者
其实判断对错以后 还要是手动来改程序不如把程序的执行结果输入到一个log里
当程序执行正确时就commit 执行错误时就 rollback
程序里加入两句
$ORACLE_HOME/bin/sqlplus ${USER}/${PASSWORD}@${SID} <<EOF

whenever sqlerror exit 9 rollback;
set heading off
set feedback off
set serverout on

INSERT INTO BIZ_ACC_TRANSFER_DATA (DATA_TYPE, TRANSFER_TYPE,CREATE_DATE,FILE_NAME,BATCH_ID) VALUES (2,1,'$tmpdate','$filename','');

commit;

EOF

论坛徽章:
0
9 [报告]
发表于 2010-06-25 12:11 |只看该作者
其实判断对错以后 还要是手动来改程序不如把程序的执行结果输入到一个log里
当程序执行正确时就commit 执行 ...
大大狗 发表于 2010-06-25 10:49


这个办法太好了!
    高手一出,万人景仰啊!

论坛徽章:
0
10 [报告]
发表于 2010-06-25 20:33 |只看该作者
高手啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP