一个简单的存储过程,总是有个报错,愁的

sophia9800 2017-10-03 10:59:04
create or replace procedure gsdz_922 as
begin
update gssjdzb set gsdrsjl=(select count(*) from gsgxgs.SHAR_ENTERPRISEBASEINFOCOLLECT where to_char(if_jlscsj,'yyyy/mm/dd')=to_char(sysdate-1,'yyyy/mm/dd')),gszsjl=(select count(*) from gsgxgs.SHAR_ENTERPRISEBASEINFOCOLLECT)
where sjbm='SHAR_ENTERPRISEBASEINFOCOLLECT'and to_char(tjrq,'yyyy/mm/dd')=to_char(sysdate-5,'yyyy/mm/dd');
commit;
end;
/
...全文
1025 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
用变量,赋值吧
  • 打赏
  • 举报
回复
把错误列出来吧,弄两个变量看着舒服点吧
mysine 2018-02-09
  • 打赏
  • 举报
回复
楼主这样写,效率太低。每条记录都需要进行统计,改成以下样子试试: create or replace procedure gsdz_922 as n_gsdrsjl number; n_gszsjl number; begin select count(*) into n_gsdrsjl from gsgxgs.SHAR_ENTERPRISEBASEINFOCOLLECT where to_char(if_jlscsj, 'yyyy/mm/dd') = to_char(sysdate - 1, 'yyyy/mm/dd'); select count(*) into n_gszsjl from gsgxgs.SHAR_ENTERPRISEBASEINFOCOLLECT; update gssjdzb set gsdrsjl =n_gsdrsjl, gszsjl =n_gszsjl where sjbm = 'SHAR_ENTERPRISEBASEINFOCOLLECT' and to_char(tjrq, 'yyyy/mm/dd') = to_char(sysdate - 5, 'yyyy/mm/dd'); commit; end; /
白头海雕 2017-11-22
  • 打赏
  • 举报
回复
错误那?我测试过程可以执行
sz_jack 2017-10-22
  • 打赏
  • 举报
回复
建议配注部分,排查是哪个代码问题,看看那个修改出了问题,实际这就是个sql 语句问题!
碧水幽幽泉 2017-10-03
  • 打赏
  • 举报
回复
你这样写是有很多问题的。 建议先把两个count(*)先查出来,放到两个变量里面, update的时候,set两个字段的值,分别等于这两个变量就行。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧