하나 이상의 데이터값을 갖는 데이터 타입으로 배열과 비슷한 역할을 하고 재사용이 가능하다. %ROWTYPE 데이터 형과, PL/SQL테이블과 레코드는 복합 데이터 타입에 속한다.
%ROWTYPE
테이블이나 뷰 내부의 컬럼 데이터형, 크기, 속석등을 그대로 사용 할 수 있다.
%ROWTYPE 앞에 오는 것은 데이터베이스 테이블 이름이다.
지정된 테이블의 구조와 동일한 구조를 갖는 변수를 선언 할 수 있다.
데이터베이스 컬럼들의 수나 DATATYPE을 알지 못할 때 편리 하다.
테이블의 데이터 컬럼의 DATATYPE이 변경 될 경우 프로그램을 재수정할 필요가 없다.
%ROWTYPE 예제
SQL>CREATE OR REPLACE PROCEDURE RowType_Test ( p_empno IN emp.empno%TYPE ) IS -- %ROWTYPE 변수 선언, -- emp테이블의 속성을 그대로 사용할 수 있다. v_emp emp%ROWTYPE ; BEGIN DBMS_OUTPUT.ENABLE; -- %ROWTYPE 변수 사용 SELECT empno, ename, hiredate INTO v_emp.empno, v_emp.ename, v_emp.hiredate FROM emp WHERE empno = p_empno; DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || v_emp.empno ); DBMS_OUTPUT.PUT_LINE( '사원이름 : ' || v_emp.ename ); DBMS_OUTPUT.PUT_LINE( '입 사 일 : ' || v_emp.hiredate ); END; / -- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용 SQL> SET SERVEROUTPUT ON ; -- 실행 결과 SQL> EXECUTE RowType_Test(7900); 사원번호 : 7900 사원이름 : JAMES 입 사 일 : 81/12/03 PL/SQL 처리가 정상적으로 완료되었습니다.