본문 바로가기
SQL/Oracle

오라클 PL/SQL RECORD 사용법 및 예제

by wakestand 2020. 11. 17.
반응형

오라클에서 RECORD는 PL/SQL에서

데이터를 객체 형식으로 담을 때 사용하는데

 

일반 변수와의 차이는

변수 하나에 값 하나가 아니라

RECORD 안에 여러 변수가 들어가기 때문에

여러 변수들에 값을 할당해 줄 수 있게 된다

 

TYPE RECORD명 IS RECORD ( 변수명 변수타입 );

으로 RECORD를 생성하게 되고

사용할_RECORD명 RECORD명;

으로 작성한 레코드를 사용할_RECORD명에 할당해서

RECORD를 사용하게 된다

 

이후 쿼리를 수행하면서

사용할_RECORD명.변수명에 값을 할당해 사용한다

 

위 예제는 RECORD를 만든 뒤

V_RECORD_NO, V_RECORD_NAME 변수를 넣어놓고

1과 TEST를 할당하고 값을 출력하는 프로시저인데 

 

프로시저 작성 후

DBMS_OUTPUT.PUT_LINE 출력을 위해

SET SERVEROUTPUT ON;

을 수행한 후에 프로시저를 수행해 보니

 

RECORD 안에 선언한 변수에

값이 제대로 할당된 것이 보인다

 

뭔가 유용해 보이지만

실제 업무에서 RECORD는

대부분의 함수(Function) 및 프로시저(Procedure)에서

사용하지 않기 때문에

뭔 기능인지만 확인하고 넘어가면 되겠다

 

마지막으로 예제에 사용한 쿼리는 아래와 같다

 

create or replace PROCEDURE RECORD_PROC
IS
  TYPE RECORD_EXAMPLE IS RECORD -- 레코드 생성
    ( 
      V_RECORD_NO     NUMBER, 
      V_RECORD_NAME   VARCHAR2(30)
    ); 
    RECORD RECORD_EXAMPLE; -- RECORD 안에 RECORD_EXAMPLE을 담아줌
BEGIN
  -- 1, 'TEST'를 RECORD의 V_RECORD_NO, V_RECORD_NAME에 넣어줌
  SELECT 1, 'TEST'
    INTO RECORD.V_RECORD_NO, RECORD.V_RECORD_NAME
    FROM DUAL;

  -- 값 출력
  DBMS_OUTPUT.PUT_LINE('NO : '||RECORD.V_RECORD_NO); 
  DBMS_OUTPUT.PUT_LINE('NAME : '||RECORD.V_RECORD_NAME);
END;

 

반응형

댓글