--参考create or replace package pkg_test
as
  type myCursor is ref cursor;
  function get(p_id number) return myCursor;
end pkg_test;create or replace package body pkg_test 
as
  function get(p_id number) return myCursor is
     rc myCursor;
     strsql varchar2(200);
  begin
     if p_id=0 then 
        open rc for select a.user_name from fnd_user a ;  
     else
        strsql:='select a.user_name from fnd_user a where a.user_id=:p_id';
        open rc for strsql using p_id;
     end if;
     return rc;  
     end get;
     
end pkg_test;
--调用
set serverout on 
declare 
  w_rc pkg_test.myCursor;
  w_name varchar2(100);
begin
  w_rc:=pkg_test.get(0);
  loop
  fetch w_rc into w_name;
        exit when w_rc%notfound;
  dbms_output.put_line(w_name);
  end loop;
end;
/

解决方案 »

  1.   

    如果懂得在ASP怎么调用就最好了
      

  2.   


    CREATE OR REPLACE PACKAGE  PAG_CUR_TEST
    AS
     TYPE c_TYPE IS REF CURSOR;
     PROCEDURE P_CUR_TEST(p_CUR IN OUT c_TYPE);
    END  PAG_CUR_TEST;CREATE OR REPLACE PACKAGE BODY PAG_CUR_TEST
    AS   PROCEDURE P_CUR_TEST(p_CUR IN OUT c_TYPE)
       AS
       BEGIN
            OPEN c_TYPE FOR SELECT * FROM TABLE_NAME;
       END P_CUR_TEST;
    END PAG_CUR_TEST;  
      

  3.   

    ASP中好像没有游标类型的?
    ASP中怎么调用呢
      

  4.   

    TO:dinya2003(OK) 
    你的例子不行,调用时提示ORA-00922 缺少或无效选项
    如果去掉set serverout on 能执行,但无返回值
      

  5.   

    CREATE OR REPLACE PACKAGE pkg_test
    AS
      TYPE myrctype IS REF CURSOR;  PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
    END pkg_test;
    /CREATE OR REPLACE PACKAGE BODY pkg_test
    AS
      PROCEDURE get (p_id NUMBER, p_rc OUT myrctype)
      IS
         sqlstr   VARCHAR2 (500);
      BEGIN
         IF p_id = 0 THEN
            OPEN p_rc FOR
               SELECT ID, NAME, sex, address, postcode, birthday
                 FROM student;
         ELSE
            sqlstr :=
               'select id,name,sex,address,postcode,birthday
              from student where id=:w_id';
            OPEN p_rc FOR sqlstr USING p_id;
         END IF;
      END get;
    END pkg_test;
      

  6.   

    为什么ORALCE中不能直接返回数据集,而SQL SERVER可以呢!
      

  7.   

    在SQL SERVER中可以创建一个表变量或者临时表来实现,在ORACLE中…… 来学习下。