sorry,oracle要确定数组上限.
或者可以考虑嵌夸表,它没有上限的限制.

解决方案 »

  1.   

    It should be helpful to you.CREATE OR REPLACE PACKAGE ado_callpkg AS
    TYPE eid IS TABLE of NUMBER(4) INDEX BY BINARY_INTEGER;
    TYPE ename IS TABLE of VARCHAR2(40) INDEX BY BINARY_INTEGER;
    PROCEDURE getEmpNames (empid OUT eid,empname OUT ename);
    end ado_callpkg;
    CREATE OR REPLACE PACKAGE BODY ado_callpkg  AS
    PROCEDURE getEmpNames (empid OUT eid,empname OUT ename) IS
    CURSOR c1 IS select employee_id,first_name||','||Middle_Initial||','||last_name as name from employee;
    cnt NUMBER DEFAULT 1;
    c c1%ROWTYPE;
    BEGIN
    open c1;
    LOOP
          FETCH c1 INTO c;
          empname(cnt):=c.name;
          empid(cnt):=c.employee_id;
          EXIT WHEN c1%NOTFOUND;  -- process the data
           cnt :=cnt+1;
      END LOOP;
    close c1;
    END;
    end ado_callpkg;