본문 바로가기
SQL/Oracle

오라클 %ROWTYPE %TYPE 개념 및 예제

by wakestand 2020. 11. 26.
반응형

오라클에서 %ROWTYPE , %TYPE 는

PL/SQL에서 변수의 데이터타입, 크기를 지정해줄 때 사용하는데

사용 시에는 변수의 데이터타입, 크기가

선택한 테이블 컬럼의 타입, 크기와 동일하게 된다

 

먼저 %ROWTYPE은

변수명 테이블명%ROWTYPE;

이런 식으로 사용하는데

 

변수명에 테이블에 들어있는 컬럼들을 담고

SELECT 시 INTO 절에 테이블명.변수명으로

값을 넣어준 뒤 사용하게 되는데

 

이러면 변수 하나만 생성해도

원하는 테이블 전체의 컬럼을 선택 가능하고

나중에 테이블을 변경했다 해도

PL/SQL에서는 변경할 것이 없어진다

 

다음으로 %TYPE는

변수명 테이블명.컬럼명%TYPE

이런 식으로 사용하는데

 

이렇게 지정을 해 주면

해당 변수명은 지정한 테이블 컬럼의

데이터 타입, 크기를 따라가게 된다

 

%TYPE 역시 한번 설정해 두면

테이블의 컬럼 데이터 타입, 크기가 변경됐다 하더라도

딱히 신경 쓸 필요가 없어진다

 

정리해보자면 %ROWTYPE, %TYPE을 통해

변수의 데이터타입, 크기를 테이블과 동일하게 맞춰줄 수 있는데

 

테이블을 자주 변경하는 경우에는

%ROWTYPE, %TYPE을 활용하면 굉장히 편하지만

한번 만들고 변경할 일이 없을 경우에는

굳이 %ROWTYPE, %TYPE을 쓸 필요가 없다는 거다

 

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

 

CREATE OR REPLACE PROCEDURE SCOTT.PROC_TEST2(
  VAL IN VARCHAR2
)
IS
  V_VAL  USE_NOW%ROWTYPE;   -- V_VAL 안에 USE_NOW 테이블 컬럼을 담음
  V_VAL2 USE_NOW.VAL1%TYPE; -- V_VAL2 안에 USE_NOW.VAL1 컬럼을 담음
BEGIN
  V_VAL2 := VAL; 
 
  SELECT 'A' 
  	INTO V_VAL.VAL1
    FROM DUAL;
END;
반응형

댓글