EXECUTE IMMEDIATE  'call 变量名' 应该是只能对SQL语句,
先用动态语句把参数取出,然后判断他需要执行的存储过程,这样不行?

解决方案 »

  1.   

    execute immediate 'begin ' || 过程名 || '; commit; end;';
      

  2.   

    execute immediate 'call '||v_proName||';';
      

  3.   

    sql:='begin '||v_proName||'; end;';
      

  4.   

    create procedure pro(p_id in varchar2)
    as
    cursor t_sor is
    select pro_col from pro_tab;
    begin
    for v_sor in t_sor loop
    str:='begin ';
    str:=str||v_sor.pro_col||'('||p_id||'); ';
    str:=str||'end;';
    execute immediate str;
    end loop;
    end;
    /
      

  5.   

    如果 execute immediate str; 可以的话,可通过字符串操作,把参数组合进字符串str
    中不就可以了吗?
      

  6.   

    str:='begin ';
    str:=str||v_sor.pro_col||'('||''''||p_id||''''||'); ';
    str:=str||' end;';
    execute immediate str;