본문 바로가기

Database/PLSQL

056 - [Oracle PL/SQL] Package - index by tables in packages

<샘플코드에서 사용한 데이터는 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