스칼라 데이터타입에는 일반 단일 데이터타입의 변수와 %TYPE 데이터형 변수가 있다.
일반변수 선언 문법
- – Identifier(변수)의 이름은 sql의 object명과 동일한 규칙을 따른다.
- – Identifier를 상수로 지정하고 싶은 경우는 CONSTANT라는 KEYWORD를 명시하고 반드시 초기값을 할당 한다.
- – NOT NULL이 정의되어 있으면 초기값을 반드시 지정하고, 정의되어 있지 않을 때는 생략 가능하다.
- – 초기값은 할당 연산자(:=)를 사용하여 정의 한다.
- – 초기값을 정의하지 않으면 Identifier는 NULL값을 가지게 된다.
- – 일반적으로 한 줄에 한 개의 Identifier를 정의 한다.
일반변수 선언 예제
-- 숫자형 상수 선언(변할 수 없다) v_price CONTANT NUMBER(4,2) := 12.34 ; v_name VARCHAR2(20) ; v_Bir_Type CHAR(1) ; -- NOT NULL의 TRUE로 초기화 v_flag BOOLEAN NOT NULL := TRUE ; v_birthday DATE;
%TYPE 데이터형
%TYPE 데이터형은 기술한 데이터베이스 테이블의 컬럼 데이터 타입을 모를 경우 사용할 수 있고, 코딩이후 데이터베이스 컬럼의 데이터 타입이 변경될 경우 다시 수정할 필요가 없다.
이미 선언된 다른 변수나 데이터베이스 컬럼의 데이터 타입을 이용하여 선언 한다.
데이터베이스 테이블과 컬럼 그리고 이미 선언한 변수명이 %TYPE앞에 올수 있다.
%TYPE 속성을 이용하여 얻을 수 있는 장점
- – DB column definition을 정확히 알지 못하는 경우에 사용할 수 있다.
- – DB column definition이 변경 되어도 다시 PL/SQL을 고칠 필요가 없다.
%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; / -- DBMS_OUTPUT 결과값을 화면에 출력 하기위해 SQL> SET SERVEROUTPUT ON; -- 실행 결과 SQL> EXECUTE Emp_Info(7369); 사원번호 : 7369 사원이름 : SMITH 사원급여 : 880