%TYPE 데이터형
⊙ %TYPE 데이터형은 기술한 데이터베이스 테이블의 컬럼 데이터 타입을 모를 경우 사용할 수 있고,
⊙ 또. 코딩이후 데이터베이스 컬럼의 데이터 타입이 변경될 경우 다시 수정할 필요가 없습니다.
⊙ 이미 선언된 다른 변수나 데이터베이스 컬럼의 데이터 타입을 이용하여 선언합니다.
⊙ 데이터 베이스 테이블과 컬럼 그리고 이미 선언한 변수명이 %TYPE앞에 올수 있습니다.
%TYPE 속성을 이용하여 얻을 수 있는 장점
- 기술한 DB column definition을 정확히 알지 못하는 경우에 사용할 수 있다.
- 기술한 DB column definition이 변경 되어도 다시 PL/SQL을 고칠 필요가 없다.
예제
v_empno emp.empno%TYPE := 7900 ;
v_ename emp.ename%TYPE;
예제 프로시져..
SQL>CREATE OR REPLACE PROCEDURE Emp_Info
/* IN Parameter */
( p_empno IN emp.empno%TYPE )
IS
/* %TYPE 데이터형 변수 선언 */
v_empno emp.empno%TYPE;
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
BEGIN
DBMS_OUTPUT.ENABLE;
/* %TYPE 데이터형 변수 사용 */
SELECT empno, ename, sal
INTO v_empno, v_ename, v_sal
FROM emp
WHERE empno = p_empno ;
/* 결과값 출력 */
DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || v_empno );
DBMS_OUTPUT.PUT_LINE( '사원이름 : ' || v_ename );
DBMS_OUTPUT.PUT_LINE( '사원급여 : ' || v_sal );
END;
/
프로시져가 생성되었습니다.
SQL>SET SERVEROUTPUT ON; -- DBMS_OUTPUT 결과값을 화면에 출력 하기위해
실행 결과
SQL> EXECUTE Emp_Info(7369);
사원번호 : 7369
사원이름 : SMITH
사원급여 : 880
PL/SQL 처리가 정상적으로 완료되었습니다.
%ROWTYPE
하나 이상의 데이터값을 갖는 데이터 타입으로 배열과 비슷한 역할을 하고 재사용이 가능합니다.
%ROWTYPE데이터 형과, PL/SQL테이블과 레코드가 복합 데이터 타입에 속합니다.
%ROWTYPE
⊙ 테이블이나 뷰 내부의 컬럼 데이터형, 크기, 속석등을 그대로 사용할수 있습니다.
⊙ %ROWTYPE 앞에 오는 것은 데이터 베이스 테이블 이름입니다.
⊙ 지정된 테이블의 구조와 동일한 구조를 갖는 변수를 선언할수 있습니다.
⊙ 데이터베이스 컬럼들의 수나 DATATYPE을 알지 못할 때 편리 합니다.
⊙ 테이블의 데이터 컬럼의 DATATYPE이 변경될 경우 프로그램을 재수정할 필요가 없습니다.
%ROWTYPE 예제 프로시져..
SQL>CREATE OR REPLACE PROCEDURE RowType_Test
( p_empno IN emp.empno%TYPE )
IS
/* %ROWTYPE 변수 선언 */
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;
/
프로시져가 생성되었습니다.
실행 결과
SQL> SET SERVEROUTPUT ON ; -- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용
SQL> EXECUTE RowType_Test(7900);
사원번호 : 7900
사원이름 : JAMES
입 사 일 : 81/12/03
PL/SQL 처리가 정상적으로 완료되었습니다.
'Windows Developer > Oracle' 카테고리의 다른 글
[Oracle]바인드 변수 (0) | 2011.02.11 |
---|---|
[Oracle] 리터럴 변수와 바인딩 변수 (0) | 2011.02.11 |
[Oracle] 인덱스의 구조 (0) | 2011.01.08 |
[Oracle] 인덱스 란? (0) | 2011.01.08 |
[Oracle] 명시적 커서와 암시적 커서 (1) | 2011.01.07 |