1. 개요
(1) PL/SQL 에서 변수를 사용 하는 이유
- 변수는 데이터의 임시 저장 영역
- 저장된 값을 조작하기 위해 사용
- 저장된 값을 반복해서 재사용 가능
(2) PL/SQL 에서 사용될 변수의 규칙
- 반드시 문자로 시작
- 문자나 숫자, 특수문자 포함가능
- 변수명은 30 bytes 이하
- 예약어 포함 불가능
(3) 변수 처리 순서
① 선언부에서 선언, 특정 값으로 초기화 가능, 제약조건 지정 가능
② 실행부에서 실행되면서 값이 할당 (:= 할당연산자 사용)
③ 서브 프로그램의 파라미터로 전달되기도 하며 서브 프로그램의 출력결과를 저장하기도 함
2. 주요 변수들 종류
- 변수 : 데이터 임시저장, 초기값 부여가능, 블록내에서 변경가능
- 파라미터 : 매개변수, 서브 프로그램과 값을 상호 전달하는 역할담당
- 서브프로그램 : 프로시저, 함수, 패키지, 트리거
- 변수의 동작 범위 : 해당 블록 시작부터 해당 블록 종료시점까지
- 블록이 새롭게 실행되면 이전 실행에서 할당되었던 값을 그대로 재 사용할수 없음. '변수의 Scope Rule'
- 전역변수(Global Variable) : 모든 블록에서 공통적으로 사용하는 변수, 패키지를 만들어 사용
(1) 단순변수
① Scalar 변수
- 단일 값을 가지는 변수의 데이터 형을 직접 지정해 주는 변수 (정수, 실수 등 형태를 직접 지정)
* 스칼라변수 문법
변수명 [constant] datatype [제약조건] [:=|default expr]
① 변수명 : 블록내에서 유일해야함, 오라클 naming rule에 합당한 이름 지정
② constant : 읽기전용 변수로 선언하기 위한 키워드로 기본적으로 초기값 지정해야함.
EX) v_rate constant number := 2;
③ datatype : 오라클 데이터 타입 모두 지원
④ 제약조건 : 항상 값을 가지도록 제약을 주는 키워드, 초기값이 반드시 지정해야함.
EX) v_name varchar2(14) NOT NULL := '이순신' ;
⑤ := / default : 변수에 기본값을 할당하기 위한 키워드
EX) v_date date default sysdate;
⑥ expr : 변수에 부여할 기본값, 단순한 값부터 다른변수, 수식, 함수 등 올수있음
⑦ 기타변수 : PL/SQL 블록이 실행되는 환경에서 선언한 변수, 실행환경과 블록내부에서 참조
* 주요 Scalar 변수 데이터 타입
① CAHR(최대길이) : 고정길이의 문자 저장, 최대 32,767 바이트값 저장, 기본 최소값1
② VARCHAR2(최대길이) : 가변길이의 문자 저장, 최대 32,767 바이트값 저장, 기본값 없음
③ NUMBER (전체자리수, 소수점이하 자리수) : 전체자리수 범위 1~38, 소수점이하자리수 -84~127
④ BINARY_INTEGER : -2,147,483,647 ~ 2,147,483,647 사이의 정수
⑤ PLS_INTEGER : -2,147,483,647 ~ 2,147,483,647 사이의 부호있는 정수, number보다 적은공간, 속도빠름
⑥ BOOLEAN : 논리적 계산에 사용, TRUE, FALSE, NULL
⑦ BINARY_FLOAT : IEEE 754 형식의 부동 소수점 수, 값을 저장하기위해 5바이트 필요
⑧ BINARY_DOUBLE : IEEE 754 형식의 부동 소수점 수, 값을 저장하기위해 9바이트 필요
⑨ DATE : 날짜 및 시간에 대한 기본유형, 4712 B.C ~ 9999 A.D 사이의 날짜 저장
⑩ TIMESTAMP : date 유형 확장, 소수로 표시되는 초 단위를 저장, 자리수지정(0~9), 기본값 6자리
⑪ TIMESTAMP WITH TIME ZONE : TIMESTAMP 유형 확장, 시간대 변위 포함
⑫ TIMESTAMP WITH LOCAL TIME ZONE : TIMESTAMP 유형 확장, 시간대 변위 포함
⑬ INTERVAL YEAR TO MONTH : 연도와 월의 간격을 저장 또는 조작
⑭ INTERVAL DAY TO SECOND : 일, 시, 분, 초의 간격을 저장 또는 조작
② Reference 변수
- 데이터 형을 다른 컬럼에서 참조후 지정하는 방식
- 저장되어야 할 정확한 데이터 형태를 모를 경우 해당 데이터가 들어있는 컬럼의 정보를 참조하도록 설정하여 선언
- 원본 데이터 타입이 변경될 경우 참조 변수의 데이터 타임도 함께 변경됨
%type : 테이블 내의 컬럼과 동일한 데이터 형 선언
EX) v_no emp.empno%type : v_no 변수에 emp테이블의 empno와 동일한 데이터형으로 선언
%rowtype : 테이블의 레코드 구조와 동일 형태의 레코드 선언, 테이블의 여러컬럼을 한꺼번에 저장
EX) v_row emp%rowtype : v_row변수에 emp테이블의 모든 컬럼의 데이터형을 저장할수 있는 변수로 선언
(2) 복합변수 (= 조합 변수)
3. 비 PL/SQL 변수
- 바인드 변수
4. PL/SQL 과 SQL 에서 사용되는 주요 데이터 타입 정리
5. 변수의 적용 범위 (Scope Rule)
'oracle > [SQL] PLSQL' 카테고리의 다른 글
6장. PL/SQL Sub program (0) | 2014.10.16 |
---|---|
5장. PL/SQL 예외처리 (0) | 2014.10.16 |
4장. PL/SQL Cursor (커서) (0) | 2014.10.14 |
3장. PL/SQL 제어문 (0) | 2014.10.14 |
1장. PL/SQL 시작 (0) | 2014.10.14 |
댓글