动态sql就可以啊
tsql:=proname;
execute immediate tsql;

解决方案 »

  1.   

    bzszp(SongZip):你好,execute immediate tsql;语法我一直不会使用,印象中它好象是PB中的东西,我想在PL/SQL中做循环,而整个循环是写在一个存储过程中的。
    如果在PL/SQL中真支持这种语法,还请说明白点,在下先谢谢了。
      

  2.   

    create or replace procedure exec_my_pros is
      c_sql varchar2(500);
    begin
      for pro_name in 你的存储过程名字的集合
      loop
        c_sql:='begin '||pro_name||';end;';
        execute immediate c_sql;
      end loop;
    end;
      

  3.   

    for i in 0 .. 100 loop
        tsql:=proname;
        execute immediate tsql;
    end loop;
      

  4.   

    正在做的应用,
    客户端调用后台函数,返回结果集, 但是连续执行超过 80多次后
    报 ORA-01000: maximum open cursors exceeded 错误下面是我的代码:create package pk_test as 
      t_cur is ref cursor;
      function fn_GetResult return t_cur; 
    end pk_test;
    /
    create package body pk_test as
     function fn_GetResult return t_cur
     is 
       rs t_cur;
      sqlview varchar2(1000);
      rst t_cur ;
     begin
       sqlview := 'select * from table ';
       if   rst%isopen then 
          close rst;         /* 因为要返回结果集, 所以不能在 return 之前关闭*/
       end if;
       return rst;
      end fn_GetResult;end pk_test ;
     但是 CLOSE 不能工作。  该如何去做? 使用其他的方法 
      

  5.   

    不知道是你的代码漏写了什么,还是什么其它原因,游标变量并没有赋值啊。若想动态的打开一个游标,应该用语句open cursorname for sql_statment
      

  6.   

    如下:
    create or replace procedure exec_my is
      c_sql varchar2(122);
    begin
      for pro_name in 你的存储过程名字的集合
      loop
        ssql:='begin '||pro_name||';end;';
        execute immediate ssql;
      end loop;
    end;