请问,一个存储过程,先是调用其他一个存储过程,然后获取那个存储过程的结果集,然后用游标来循环执行,这个该怎么做呢? 我cursor 需要写在begin前,而调用其他存储过程需要写在begin .. end 中间. 要不然回出错啊!

解决方案 »

  1.   

    而且cursor也是可以在使用的时候定义的。
    语法:
       for r_name in select col1,col2 from table1
       end loop;
      

  2.   

    其中的r_name类似fetch into的作用可以通过r_name.col取到每行的结果
      

  3.   

    我现在是
    procedure pg (Id varchar2)
      is
        pg1(Id);  --调用存储过程
        cursor cur is select * from temp_tb ;
      begin
             .......................
      end;
    这样的结构出错,一定要把pg1(Id); 放在begin里,而 cursor 也一定要在begin外
      

  4.   

    这样可以!cursor隐式定义。
    procedure pg (Id varchar2)
      is
      begin
        pg1(Id);  --调用存储过程
        for c1 in (select * from temp_tb) loop
           .......................       
        end loop
           .......................
      end;
      

  5.   

    用集合数据类型(记录,varrys或者嵌套表),再可以通过存储过程以out参数返回,然后循环遍历这个集合数据类型,不知道可以不?