Database/PLSQL
056 - [Oracle PL/SQL] Package - index by tables in packages
unsungIT
2024. 3. 7. 01:12
<샘플코드에서 사용한 데이터는 HR 스키마이고, 오라클 설치시 생성할 수 있는 기본 스키마 입니다>
아래 샘플은 index by table을 이용한 커서 결과를 저장하는 코드입니다.
create or replace package emp_pkg
is
type emp_table_type is table of employees%rowtype
index by binary_integer;
procedure get_employees(p_emps out emp_table_type );
end;
/
create or replace package body emp_pkg
is
procedure get_employees(p_emps out emp_table_type )
is
begin
for emp_record in (select * from employees)
loop
p_emps(emp_record.employee_id):=emp_record;
end loop;
end;
end;
패키지를 아래와 같이 처리 가능합니다.
declare
v_employees emp_pkg.emp_table_type;
begin
emp_pkg.get_employees(v_employees);
dbms_output.put_line(v_employees(101).first_name);
dbms_output.put_line(v_employees(200).first_name);
for i in 100..110
loop
dbms_output.put_line(v_employees(i).employee_id ||' : '|| v_employees(i).first_name);
end loop;
end;
출력 결과는
Neena
Jennifer
100 : Steven
101 : Neena
102 : Lex
103 : Alexander
104 : Bruce
105 : David
106 : Valli
107 : Diana
108 : Nancy
109 : Daniel
110 : John