본문 바로가기

Database/PLSQL

016 - [Oracle PL/SQL] Collections - Index by tables(Associative arrays)

<샘플코드에서 사용한 데이터는 HR 스키마이고, 오라클 설치시 생성할 수 있는 기본 스키마 입니다>

 

 

 

 

 

 

 

# 숫자 인덱스

declare
    type tab_no is table of varchar2(20)
    index by pls_integer;

    v_tab_no tab_no;
begin
    v_tab_no(1):='aaa';
    v_tab_no(6):='bbb';
    v_tab_no(4):='ccc';
    
    dbms_output.put_line(v_tab_no(1));
    dbms_output.put_line(v_tab_no(6));
    dbms_output.put_line(v_tab_no(4));
end;
-------------------------
aaa
bbb
ccc

 

 

 

# 문자열 인덱스

declare
    type tab_no is table of number
    index by varchar2(20);
    
    v_tab_no tab_no;
begin
    v_tab_no('aaa'):=1;
    v_tab_no('bbb'):=6;
    v_tab_no('ccc'):=4;
    
    dbms_output.put_line(v_tab_no('aaa'));
    dbms_output.put_line(v_tab_no('bbb'));
    dbms_output.put_line(v_tab_no('ccc'));
end;
--------------------------
1
6
4

 

 

 

# for문을 이용한 샘플 코드

declare
    type tab_emp is table of varchar2(100)
    index by pls_integer;

    v_tab_emp tab_emp;
    v_name varchar2(100);
begin
    for i in 100..110
    loop
        select first_name||' '||last_name into v_name
        from employees
        where employee_id=i;
        v_tab_emp(i):=v_name;
    end loop;
  
    for i in 100..110
    loop
        dbms_output.put_line( v_tab_emp(i));
    end loop;

end;
---------------------------------------------------------
Steven King
Neena Kochhar
Lex De Haan
Alexander Hunold
Bruce Ernst
David Austin
Valli Pataballa
Diana Lorentz
Nancy Greenberg
Daniel Faviet
John Chen