PL/SQL레코드는 여러개의 데이터 타입을 갖는 변수들의 집합이다.
스칼라, RECORD, 또는 PL/SQL TABLE datatype중 하나 이상의 요소로 구성 된다.
논리적 단위로서 필드 집합을 처리할 수 있도록 해 준다.
PL/SQL 테이블과 다르게 개별 필드의 이름을 부여할 수 있고, 선언시 초기화가 가능하다.
PL/SQL 레코드 문법 및 선언예제
-- 선언 예제 TYPE record_test IS RECORD ( record_empno NUMBER, record_ename VARCHAR2(30), record_sal NUMBER); -- record_test 레코드 타입으로 prd_record변수를 선언해서 사용 prd_record record_test; -- 아래 프로시저에서 사용된 예제를 보면 이해가 쉽게 갈 것이다.
PL/SQL 레코드 예제
SQL> CREATE OR REPLACE PROCEDURE Record_Test ( p_empno IN emp.empno%TYPE ) IS -- 하나의 레코드의 세가지의 변수타입 선언 TYPE emp_record IS RECORD (v_empno NUMBER, v_ename VARCHAR2(30), v_hiredate DATE ); emp_rec emp_record ; BEGIN DBMS_OUTPUT.ENABLE; -- 레코드의 사용 SELECT empno, ename, hiredate INTO emp_rec.v_empno, emp_rec.v_ename, emp_rec.v_hiredate FROM emp WHERE empno = p_empno; DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || emp_rec.v_empno ); DBMS_OUTPUT.PUT_LINE( '사원이름 : ' || emp_rec.v_ename ); DBMS_OUTPUT.PUT_LINE( '입 사 일 : ' || emp_rec.v_hiredate); END; / -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용) SQL> SET SERVEROUTPUT ON ; -- 실행 결과 SQL> EXECUTE Record_Test(7369); 사원번호 : 7369 사원이름 : SMITH 입 사 일 : 80/12/17 PL/SQL 처리가 정상적으로 완료되었습니다. -- %ROWTYPE 예제와 비교해 보세요