nickjoIT

%TYPE && %ROWTYPE 본문

DB/oracle

%TYPE && %ROWTYPE

nickjo 2017. 5. 22. 11:01

%TYPE

- 테이블 칼럼 또는 사용자 정의 칼럼 타입과 동일한 타입을 설정할 때 사용


%ROWTYPE

- 테이블의 행 단위 칼럼 또는 커서에서 추출된 행 단위 칼럼과 동일한 레코드 타입으로 설정하는데 사용


ex)


DECLARE

  --DEPT 테이블의 DNAME과 같은 타입의 변수 선언

  l_dname dept.dname%TYPE;

  

  --DEPT 테이블의 행과 같은 레코드 변수 선언

  dept_rec1 dept%ROWTYPE;

  

  --DEPT테이블에서 일부 칼럼들만 추출하는 커서 선언

  CURSOR c1 IS

    SELECT deptno, dname, loc

     FROM dept;

     

     --C1 커서의 칼럼과 같은 레코드 변수 선언

     dept_rec2 c1%ROWTYPE;

BEGIN

  --DEPT테이블의 한 행의 칼럼을 %ROWTYPE의 레코드 변수에 한번에 저장

  SELECT *

    INTO dept_rec1

    FROM dept

   WHERE rownum=1;

   

   --레코드 내 각 칼럼의 값을 개별적으로 출력함

   DBMS_OUTPUT.PUT_LINE('deptno:' || dept_rec1.deptno || ' dname:' || dept_rec1.dname);

   

   --DEPT테이블의 dname 칼럼의 값을 %TYPE의 변수에 저장

   l_dname := dept_rec1.dname;

   

   --변수에 저장된 값을 출력함

   DBMS_OUTPUT.PUT_LINE('dname:' || l_dname);

   

   --커서에서 추출된 모든 칼럼을 %ROWTYPE의 레코드 변수에 한번에 저장

   OPEN c1;

   FETCH c1 INTO dept_rec2;

   

   --레코드 내 각 칼럼의 값을 개별적으로 출력함

   DBMS_OUTPUT.PUT_LINE('deptno:' || dept_rec2.deptno || ', dname:' || dept_rec2.dname || ', loc:' || dept_rec2.loc);

   

   CLOSE c1;  

END;

/



'DB > oracle' 카테고리의 다른 글

NVL, NVL2, NULLIF, COALESCE  (0) 2017.05.24
NULL 제어  (0) 2017.05.24
레코드 타입  (0) 2017.05.22
SELECT INTO  (0) 2017.05.21
화면 출력  (0) 2017.05.21
Comments