免费注册 查看新帖 |

Chinaunix

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

Shelll调用存储过程更新数据库,调用成功,但是数据未更新,为什么呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-10 15:57 |只看该作者 |倒序浏览
我的问题是:shell调用oracle的存储过程,成功了,为什么不更新数据呢?
--在调用存在过程之前字段a1都是空的。我在shell里面调用,然后在日志文件里面返回的是:
PL/SQL procedure successfully completed.
然后再去查一下表ta_test ,发现a1还是空的(a2肯定是小于当前时间了),即没有更新数据。
我在PLSQL Developer 里单独执行存储过程,是更新了数据了的。为什么shell里面调用的话,没有更新呢?
我试过在shell里面添加commit也是不行的。。。。
大家帮我看一下,哪里出错了呢?

-------------------存储过程-----------------------------------------
create or replace procedure pr_test
is
sqlstr varchar2(4000);
begin
     sqlstr:='update ta_test
     set a1=to_date('''||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'')
     where a2<=to_date('''||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'')
     and a1 is null';
     dbms_output.put_line(sqlstr);
     execute immediate sqlstr;
     commit;  
  exception
  when others then
    begin
      dbms_output.put_line('错误代码 = ' || to_char(sqlcode));
      dbms_output.put_line('错误信息:' || SQLERRM);
      rollback;
    end;
end pr_test;
----------------shell脚本--------------------------------------------
#!/bin/sh
constr="username/password@myDB"
sqlstr=` sqlplus -s ${constr}<<eof
exec pr_test;
exit;
eof`
echo $(date +'%Y-%m-%d %H:%M:%S')$sqlstr>>a.log

论坛徽章:
0
2 [报告]
发表于 2012-03-10 19:45 |只看该作者
没有commit .

论坛徽章:
0
3 [报告]
发表于 2012-03-10 20:51 |只看该作者
不是shell或者存储过程的问题 再次检查下数据吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP