■ 레코드 타입을 항목으로 갖는 연관 배열을 사용하는 방법을 보여준다.
▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
SET SERVEROUTPUT ON; DECLARE -- 직원 테이블을 조회하는 커서를 정의한다. CURSOR EMPLOYEE_CURSOR IS SELECT * FROM SCOTT.EMP ORDER BY ENAME; -- 직원 커서의 레코드 타입을 항목으로 갖는 연관 배열 타입을 정의한다. TYPE EMPLOYEE_ARRAY_TYPE IS TABLE OF EMPLOYEE_CURSOR%ROWTYPE INDEX BY BINARY_INTEGER; -- 직원 연관 배열 타입의 변수를 정의한다. V_EMPLOYEE_ARRAY EMPLOYEE_ARRAY_TYPE; -- 연관 배열을 조작하는 인덱스 변수를 정의한다. V_CURRENT_INDEX BINARY_INTEGER; V_LAST_INDEX BINARY_INTEGER; BEGIN -- 직원 커서를 조회해 직원 연관 배열 데이터를 설정한다. FOR EMPLOYEE_RECORD IN EMPLOYEE_CURSOR LOOP V_EMPLOYEE_ARRAY(EMPLOYEE_RECORD.EMPNO) := EMPLOYEE_RECORD; END LOOP; -- 연관 배열 데이터를 출력한다. V_CURRENT_INDEX := V_EMPLOYEE_ARRAY.FIRST; V_LAST_INDEX := V_EMPLOYEE_ARRAY.LAST; LOOP DBMS_OUTPUT.PUT_LINE(V_EMPLOYEE_ARRAY(V_CURRENT_INDEX).ENAME); EXIT WHEN V_CURRENT_INDEX >= V_LAST_INDEX; V_CURRENT_INDEX := V_EMPLOYEE_ARRAY.NEXT(V_CURRENT_INDEX); END LOOP; END; |