如题,我有类似于这样的存储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;
现在存储中存在错误,我已经尝试拼了好长时间,望哪位高手指点一下,帮我把他拼出来吧,小弟先谢谢了!!! 在线等!!!

解决方案 »

  1.   

    你应该把提示你什么错误贴出来,不知道怎么看,你可以show error命令来查看具体错误。
    首先你的end 就没有接上存储过程名。
      

  2.   

    http://blog.csdn.net/cnming/article/details/3298729
    看下这篇文,估计就是这个问题。
      

  3.   

    现在存储修改成这样后,
    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之后 还是会报错,到底应该怎么才能编译通过?????
    是哪的错误呢???
      

  4.   

    这样才对吧:
    to_date(to_char('''||prm_qs||''', ''yyyy-mm-dd hh24:mi:ss''))