如何在oracle存储中 循环执行其他的不同存储?望高手解答

gaoxy51 2012-10-03 05:04:39
如题,我有类似于这样的存储20个,
call PJ_EPMI_MIR(to_date('2012-08-01 00:00:00','yyyy-mm-dd hh24:mi:ss'), sysdate,1);

现在我想写一个存储,去循环执行这20个存储代码如下

create or replace procedure PJ_ZDZX
(
prm_qs in date,
prm_zs in date
) as
begin
for proname in (select a.object_name
from user_objects a
where a.object_type='PROCEDURE'
and a.object_name like '%MIR%') loop
execute immediate ' call '|| proname || '(' || prm_qs || ','|| prm_zs || ',1)';
end loop;
end;
现在存储中存在错误,我已经尝试拼了好长时间,望哪位高手指点一下,帮我把他拼出来吧,小弟先谢谢了!!! 在线等!!!
...全文
123 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
reg13141 2012-10-09
  • 打赏
  • 举报
回复
这样才对吧:
to_date(to_char('''||prm_qs||''', ''yyyy-mm-dd hh24:mi:ss''))
gaoxy51 2012-10-05
  • 打赏
  • 举报
回复
现在存储修改成这样后,
create or replace procedure PJ_ZDZX
(
prm_qs in date,
prm_zs in date
) as
begin
for proname in (select a.object_name
from user_objects a
where a.object_type='PROCEDURE'
and a.OBJECT_NAME not in('PJ_FPMX_MIR','PJ_MIR_CLEAN','PJ_ZY_HZXX_MIR')
and a.object_name like '%MIR%') loop

execute immediate 'call '|| proname ||'(to_date('''
||to_char(prm_qs, 'yyyy-mm-dd hh24:mi:ss')||''',''yyyy-mm-dd hh24:mi:ss'')' ||
',to_date('''||to_char(prm_zs, 'yyyy-mm-dd hh24:mi:ss')||''',''yyyy-mm-dd hh24:mi:ss'')' || ',1)';


end loop;
end;

报这样的错误
PROCEDURE TPSOFT.PJ_ZDZX 编译错误

错误:PLS-00306: 调用 '||' 时参数个数或类型错误
行:13
文本:execute immediate 'call '|| proname ||'(to_date('''

错误:PL/SQL: Statement ignored
行:13
文本:execute immediate 'call '|| proname ||'(to_date('''



如果我把proname 换成 两个 “'”(单引号) 的话 存储就可以执行通过,所以我认为是 这个循环变化proname 的类型不是字符串,但是我把他to_char之后 还是会报错,到底应该怎么才能编译通过?????
是哪的错误呢???
johnny_ 2012-10-03
  • 打赏
  • 举报
回复
http://blog.csdn.net/cnming/article/details/3298729
看下这篇文,估计就是这个问题。
johnny_ 2012-10-03
  • 打赏
  • 举报
回复
你应该把提示你什么错误贴出来,不知道怎么看,你可以show error命令来查看具体错误。
首先你的end 就没有接上存储过程名。

3,499

社区成员

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

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