create or replace procedure getemps( p_cursor in out types.cursorType ) 
as begin open p_cursor for select * from PROVINCE_MASTER; 
end; 这个存储过程怎么执行?Oracle存储过程中执行查询,如何返回数据集,这样的存储过程该怎么写呢,请高手指教

解决方案 »

  1.   

    declarecc types.cursorType;
    begin
         getemps(cc);
    end;
      

  2.   

    create or replace procedure test_cursor(out_cursor out SYS_REFCURSOR)
    is
    begin
        open  out_cursor for
        select t.* from emp t;
    end;
      

  3.   


    直接用oracle自带的SYS_REFCURSOR游标定义和在包类定义游标类型这两种方法有区别吗?还是在编程时的一种习惯?
      

  4.   

    SYS_REFCURSOR是Oracle以预先定义的游标,一般来作Out参数进行传递
      

  5.   


    除了使用test跟踪外
    使用
    declare 
    cc sys_refcursor; 
    begin 
        test_cursor(cc); 
    end;
    如何能看到返回的结果集
      

  6.   

    在ORACLE中基本存储过程是不能返回数据集的,如果非要返回数据集,可以采取这样的方案,先定义一个包,在,在包里定义一个游标类型,然后同时定义一个函数,返回类型为定义的游标,这样就可以使这个函数返回数据集了。
      

  7.   


    在 sqlplus 里执行var ocursor refcursor;
    call test_cursor(:ocursor);
    print ocursor;
      

  8.   

    var ocursor refcursor;
    call test_cursor(:ocursor);
    print ocursor;
    这几行代码在oracle客户端执行报错啊。。