PL/SQL 강좌. %TYPE 및 %ROWTYPE 속성
15.1.2.3. %TYPE 및 %ROWTYPE 속성
%TYPE 속성
실무에서 테이블의 모든 컬럼에 대해 데이터 타입 및 길이를 정확히 알고 있을 수는 없습니다. 하나의 테이블에 컬럼의 개수가 많은 경우도 많고, 더구나 가끔 칼럼 사이즈는 변하기도 하죠. 이 경우 %TYPE 속성을 사용한다면 PL/SQL에서 보다 능동적으로 대처할 수 있습니다.
변수의 데이터 타입을 어떤 테이블의 어떤 컬럼과 같이 하라는 의미 입니다.
물론 이전에 정의한 어떤 변수와 타입을 같이 하라는 의미를 부여할 수도 있습니다.
DECLARE -- v_name 변수의 타입을 EMP 테이블의 ename 컬럼과 같이 정의 합니다. v_ename EMP.ENAME%TYPE; -- p_name 변수의 타입을 이전에 정의한 v_ename 변수의 타입으로 정의 합니다. p_name v_ename%TYPE; BEGIN … END |
%ROWTYPE 속성
SELECT LIST에서 전체 컬럼을 선택해서(SELECT *) INTO 절의 변수에서 받을 때 유용하게 이용 됩니다. 어떤 테이블의 ROW(로우, 행, 레코드)와 타입을 같이 하라는 속성 입니다.
%ROWTYPE 속성을 실습해 보겠습니다.
실습
EMP 테이블에서 사번이 7369인 사원의 레코드의 모든 컬럼을 %ROWTYPE을 이용하여 SELECT ~ INTO 절에서 받아 보겠습니다.
아래 PL/SQL 예제를 실습해 보세요. |
SET SERVEROUTPUT ON
DECLARE
-- EMP 테이블의 행, ROW와 구조를 같이하는 EMP_RECORD라는 변수를 정의합니다.
-- EMP%ROWTYPE을 테이블 기반 레코드 타입 이라고 합니다.
EMP_RECORD EMP%ROWTYPE;
BEGIN
-- 7360 사원의 모든 컬럼을 추출 후 EMP_RECORD 변수에 담습니다.
SELECT *
INTO EMP_RECORD
FROM EMP
WHERE EMPNO = 7369 ;
-- 사번(empno), 성명(ename), 부서코드(deptnp) 값을 출력 합니다.
DBMS_OUTPUT.PUT_LINE(EMP_RECORD.EMPNO || ',' || EMP_RECORD.ENAME || ',' || ',' || EMP_RECORD.DEPTNO);
END;
<실행결과>
7369,SMITH,800,20
댓글 없음:
댓글 쓰기