具体问题如下:      我需要根据输入的两个参数 v_eparchyname,v_month 来确定取数据的表,而且要用到一个自定义游标 v_cur来OUT所需的参数, v_cur中可以存放 50 个VARCHAR2(50)的变量,因为是使用统一的接口开发,所以不能修改此游标,需要动态实现 
               OPEN v_cur FOR 
               SELECT D1,D2,D3……,D50 
                 FROM v_eparchyname||'_Table_'||v_month 动态调用系统已有的游标我已经研究过,但是好象都是用ORACLE自带的类来实现,对此有研究的前辈,请赐教:) 
    谢谢!! 

解决方案 »

  1.   

    没有用游标来out过参数,关注!
      

  2.   

    PACKAGE AMSSO
      IS
      
       --define cursor type
       type cursortype is ref cursor;   --Get Users by cursor
       procedure GetUsers(v_usercursor out cursortype);
       
    END; -- Package specPACKAGE BODY AMSSO
    IS
       procedure GetUsers(v_usercursor out cursortype)
       IS
            v_cursor cursortype;
       BEGIN
          open v_cur for
                   select D1,D2,D3……,D50 
                     from v_eparchyname||'_Table_'||v_month;
          v_usercursor:=v_cursor;
       END;
          
    END;
      

  3.   

    exp:CREATE PACKAGE emp_data AS
        TYPE EmpRecTyp IS RECORD (
                       emp_id NUMBER(4),
                       emp_name VARCHAR2(10),
                       job_title VARCHAR2(9),
                       dept_name VARCHAR2(14),
                       dept_loc VARCHAR2(13));
       TYPE EmpCurTyp IS REF CURSOR RETURN EmpRecTyp;
       PROCEDURE get_staff (dept_no IN NUMBER,emp_cv IN OUT EmpCurTyp);
    END;
    CREATE PACKAGE BODY emp_data AS
       PROCEDURE get_staff (dept_no IN NUMBER,emp_cv IN OUT EmpCurTyp) IS
       BEGIN
       OPEN emp_cv FOR
                 SELECT empno, ename, job, dname, loc FROM emp, dept
                 WHERE emp.deptno = dept_no AND emp.deptno = dept.deptno
                 ORDER BY empno;
      END;
    END;
    /
    COLUMN EMPNO HEADING Number
    COLUMN ENAME HEADING Name
    COLUMN JOB HEADING JobTitle
    COLUMN DNAME HEADING Department
    COLUMN LOC HEADING Location
    SET AUTOPRINT ON
    VARIABLE cv REFCURSOR
    EXECUTE emp_data.get_staff(20, :cv)