日期:2014-05-17  浏览次数:20857 次

拼装语句执行存储过程
本帖最后由 IceIsabel 于 2013-09-23 09:51:33 编辑
create or replace procedure p_rerun_test(v_exp_time date) is
v_sql varchar2(100);
begin
  for v_proc in (select proc_name from rpt_error_log where trunc(insert_time) =trunc(v_exp_time) and success like '%ORA-02068%') loop
   v_sql:= v_proc.proc_name||'('||v_exp_time||')';
   execute immediate v_sql;
  end loop;
end;


有一个job每天自动执行,通过dblink访问另一个数据库,执行过程中有时候会断网,因此想对于因断网而执行失败的存过重新执行,就像着用动态拼装sql实现,但是执行的时候会报错??请各位大虾指教

------解决方案--------------------
v_sql:= v_proc.proc_name
------解决方案--------------------
'('
------解决方案--------------------
v_exp_time
------解决方案--------------------
')';

改为:
v_sql:= 'begin '
------解决方案--------------------
v_proc.proc_name
------解决方案--------------------
'('
------解决方案--------------------
v_exp_time
------解决方案--------------------
');  end;';