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;
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;