我使用存储过程返回一个游标结果集,在使用该游标时一定得FETCH v_cursor INTO 吗?
有没有其他的使用方式,例如可以把游标当成一个表 select * from v_cursor 这样的使用方式.我的目的是因为该游标有多个字段。很多地方使用,并且每次使用的字段不同。

解决方案 »

  1.   

    如果使用游标,需要在循环中使用fetch into的,你可以取出来存放到变量里面。
    当然不用fetch into可以使用游标for循环,和上面的类似,只不过是简化了语法。
    for c in v_cur loop
       dbms_output(c.col1);
    end loop;你如果需要象表一样使用,你可以建立一张临时表来处理。
      

  2.   

    --for游标循环
    DECLARE
      CURSOR v_cur IS
        SELECT col1, col2 FROM test;
    BEGIN
      FOR c IN v_cur LOOP
        dbms_output.put_line(c.col1);
      END LOOP;
    END;
    /
      

  3.   


    调用的时候 FETCH v_cursor INTO  表类型的记录变量就可以
      

  4.   

    可以定义一个表类型的变量、然后把存储过程改成function,让它的反回值设置成你要的结果集,当人结果集的数据类型需要跟你定义的表变量一致才行。
      

  5.   

    返回的cursor已经执行过了open操作,
    所以只能只用fetch into,不能使用for in loop