본문 바로가기
oracle/[SQL] PLSQL

2장. PL/SQL 변수

by #moonyz 2014. 10. 14.

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%typev_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

댓글