3.2.3 PL/SQL 레코드

출처 http://www.gurubee.net/lecture/1048

 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 예제와 비교해 보세요 
    

답글 남기기 0

Your email address will not be published. Required fields are marked *