nickjoIT
%TYPE && %ROWTYPE 본문
%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 |