HPL/SQL - %ROWTYPE 속성
HPL/SQL - %ROWTYPE 속성
%ROWTYPE 속성은 지정한 데이터베이스 테이블과 동일한 컬럼과 데이터 타입을 가지는 레코드 변수를 선언할 수 있게 해 줘요. 테이블 구조가 바뀌어도 변수 선언을 다시 고칠 필요 없이 자동으로 따라가니까 굉장히 편리해요.
출처: 문서
본문
문법(Syntax):
var_name [schema.]table_name%ROWTYPE
예제(Examples):
SELECT ... INTO 구문으로 테이블의 특정 행을 %ROWTYPE 변수에 담아 사용할 수 있어요.
DECLARE
v orders%ROWTYPE;
BEGIN
SELECT * INTO v FROM orders LIMIT 1;
DBMS_OUTPUT.PUT_LINE('Item: ' || v.name || ' - ' || v.description);
END;
커서(CURSOR)와 함께 사용해 한 행씩 읽을 수도 있어요.
DECLARE
v orders%ROWTYPE;
CURSOR c IS SELECT * FROM orders;
BEGIN
OPEN c1;
FETCH c1 INTO v1;
DBMS_OUTPUT.PUT_LINE('Item: ' || v.name || ' - ' || v.description);
CLOSE c1;
END;
FOR ... LOOP 반복문 안에서도 활용할 수 있어요.
BEGIN
FOR v IN (SELECT * FROM orders)
LOOP
DBMS_OUTPUT.PUT_LINE('Item: ' || v.name || ' - ' || v.description);
END LOOP;
END;
동적 SQL(EXECUTE IMMEDIATE)의 결과를 받아올 때도 사용할 수 있어요.
DECLARE
v orders%ROWTYPE;
BEGIN
EXECUTE IMMEDIATE 'SELECT * FROM orders LIMIT 1' INTO v;
DBMS_OUTPUT.PUT_LINE('Item: ' || v.name || ' - ' || v.description);
END;
호환성(Compatibility): Oracle
더 알아보기 (Learn more)
%ROWTYPE은 Oracle PL/SQL 스타일에서 온 기능이에요. 레코드형 변수를 다루는 다른 방법인 DECLARE 문법과 함께 보면 더 이해하기 쉬워요.