1、我想在后台用存储返回数据集,在前台调用这个存储过程,应该怎么办?
   cteate or replace procedure test as
       select * from scott.emp where sal >800;   为何这个过程总是出错?返回数据集只能通过cursor,用循环的方法一条一条的读出来?有什么好方法?让前台能调用这个存储过程并看到返回的数据集?

解决方案 »

  1.   

    这种直接返回记录集的方法在ORACLE中是没有的,只能用返回游标或集合的方法替代,这点就是ORACLE与SQL SERVER的不同,我觉得还是SQL SERVER这方面强。
      

  2.   

    create package test_age
    as
    type mycursor is ref curosr;
    end;
    /
    cteate or replace procedure test(p_rc out test_age.mycursor)
    as
    begin
    open p_rc for select * from scott.emp where sal >800;
    end;
    /
      

  3.   

    这是我以前写过的一个返回结果集的包,可以参照一下
    CREATE OR REPLACE PACKAGE PAC_Mycursor
    AS
     TYPE QUERY_CURSOR IS REF CURSOR;PROCEDURE My_cur_out(
    An_area_id IN number,
    An_serv_id IN number,
    result1 out QUERY_CURSOR);
    END PAC_Mycursor;CREATE OR REPLACE PACKAGE BODY PAC_Mycursor
    AS
    PROCEDURE My_cur_out(
    An_area_id IN number,
    An_serv_id IN number,
    result1 out QUERY_CURSOR
    )
        AS
            BEGIN
                OPEN result1 FOR
    SELECT SERV_ID, SERV_SEQ_NBR
    from a
    where area_id = An_area_id and serv_id > An_serv_id ;
            END;END PAC_Mycursor;
      

  4.   

    cteate or replace procedure test(outList out TCursor) as
      begin
        open for
           select * from emp a where a.sal >800;
      end;
      

  5.   

    xudazhi(hair) 的方法应该没错