如题,我有类似于这样的存储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;
现在存储中存在错误,我已经尝试拼了好长时间,望哪位高手指点一下,帮我把他拼出来吧,小弟先谢谢了!!! 在线等!!!
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;
现在存储中存在错误,我已经尝试拼了好长时间,望哪位高手指点一下,帮我把他拼出来吧,小弟先谢谢了!!! 在线等!!!
首先你的end 就没有接上存储过程名。
看下这篇文,估计就是这个问题。
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之后 还是会报错,到底应该怎么才能编译通过?????
是哪的错误呢???
to_date(to_char('''||prm_qs||''', ''yyyy-mm-dd hh24:mi:ss''))