Oracle PL/SQL 강좌
%ROWTYPE 12 18 99,999+

by 구루비 %ROWTYPE DBMS_OUTPUT SERVEROUTPUT 복합 데이터 타입 [2002.01.20]


  하나 이상의 데이터값을 갖는 데이터 타입으로 배열과 비슷한 역할을 하고 재사용이 가능하다. %ROWTYPE 데이터 형과, PL/SQL테이블레코드는 복합 데이터 타입에 속한다.

%ROWTYPE

  테이블이나 뷰 내부의 컬럼 데이터형, 크기, 속석등을 그대로 사용 할 수 있다.

  %ROWTYPE 앞에 오는 것은 데이터베이스 테이블 이름이다.

  지정된 테이블의 구조와 동일한 구조를 갖는 변수를 선언 할 수 있다.

  데이터베이스 컬럼들의 수나 DATATYPE을 알지 못할 때 편리 하다.

  테이블의 데이터 컬럼의 DATATYPE이 변경 될 경우 프로그램을 재수정할 필요가 없다.

%ROWTYPE 예제

 
SQL>CREATE OR REPLACE PROCEDURE RowType_Test
        ( p_empno IN emp.empno%TYPE )

    IS

        -- %ROWTYPE 변수 선언, 
        -- emp테이블의 속성을 그대로 사용할 수 있다. 
        v_emp   emp%ROWTYPE ;

   BEGIN

        DBMS_OUTPUT.ENABLE;

        -- %ROWTYPE 변수 사용 
        SELECT empno, ename, hiredate
        INTO v_emp.empno, v_emp.ename, v_emp.hiredate
        FROM emp
        WHERE empno = p_empno;

       DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || v_emp.empno );
       DBMS_OUTPUT.PUT_LINE( '사원이름 : ' || v_emp.ename );
       DBMS_OUTPUT.PUT_LINE( '입 사 일 : ' || v_emp.hiredate );

   END;
   / 

-- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용
SQL> SET SERVEROUTPUT ON ;  

-- 실행 결과 
SQL> EXECUTE RowType_Test(7900);

사원번호 : 7900
사원이름 : JAMES
입 사 일 : 81/12/03

PL/SQL 처리가 정상적으로 완료되었습니다.
    

참고링크

- 강좌 URL : http://www.gurubee.net/lecture/1046

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 디노 [2005.05.10 14:43:37]
속석등을 => 속성등을...^^

by 시근땀 [2006.03.21 14:19:36]
와.. 좋다.
여러개의 변수를 %type으로 선언할 것을ㄹㄹㄹ
%rowtype으로 한큐에 해결하는군요.
웬지 자바에서 쓰는 class 느낌이 나는데요..

by Allen [2006.04.10 16:33:51]
성능상의 문제는 없을까요... -_-;;;

by 노루삼촌 [2006.08.30 20:43:23]
두번째 님말 동감 ㅋㅋ

오랄클 알면 알수록 재미잇는 ㅋㅋ 그다지 어렵지도 안코 흐흐

by 오일사마 [2006.10.15 19:57:38]
과연 오라클이 계속 easy 할지...여기까지는 평지일뿐^^

by 김동진 [2007.04.11 17:02:56]
마치 옥의 티 를 찾는 듯한 재미를 주시는 쥔장님 ㅋ
님들아. 일부러 틀리시는거에요. 무플방지위원장님의 깊은 뜻.
오늘도 잘보고 갑니다 수고하세요

by 멋쟁이 [2007.06.18 22:14:47]
안어렵데...

by 디스타임 [2007.11.05 14:45:50]
제 생각이지만 성능상의 문제가 생기나요? 비주얼베이직의 varient(맞나?--)와는 다르게 %type은 단지 링크일 것 같은데.. 아닌가요? ^^;

by 김윤경 [2007.11.08 13:52:45]
rowtype 너무 좋아요.
오라클은 참 착한 친구에요^^

by 무리 [2008.04.29 23:14:35]
척하면 삼천리, 쾅하면 지붕에서 호박 떨어지는소리.
성능에 지대한 영향이 있음

by 미친나비 [2009.12.30 14:40:59]
제 생각에도 성능상의 문제가 있을듯...%rowtype 사용시에는 불필요한 컬럼들까지 다 메모리에 얹게 되니 분명 성능저하가 발생할것 같습니다.

by finecomp [2009.12.31 15:34:58]
제 생각으론...위 사항은 주요 튜닝포인트가 아닙니다...
즉, 이 정도가 미치는 영향은 성능상에 별 영향이 없다는 말이죠...;

보통 쿼리 구현 시 쓸데없이 읽게되는 block(보통16K이상)들이 성능저하의 주요 원인들 중 하나입니다...;

by finecomp [2009.12.31 15:37:33]
선택과 집중 측면에서 보더라도...;
위 사항들은 튜닝 시 선택할 사항도 집중할 사항도 아닙니다...;

by 쫑 [2012.02.03 11:09:23]
아하~ ! ㅋㅋㅋ

by 돌이맹이 [2012.02.27 15:16:39]
음.. 셈플은 쉬워

by 준티 [2015.12.21 14:42:19]

오라클 배우면 배울수록 재밋고도 어렵네요.ㅋㅋ


by 크레이지황 [2016.04.03 21:16:26]

편리한 기능이네요

속성등을 그대로 사용하고픈 테이블을

rowtype로 지정하고 사용할때마다 rowtype 변수를 사용 ㅎㅎ


by 자이제시작이야 [2017.07.04 11:06:22]

기존 테이블의 속성들을 그대로 사용하면서 새로운 칼럼을 추가하려면 어떻게 해야하죠?

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입