PL/SQL 구조와 변수 DB2017. 8. 3. 21:26
<PL/SQL 구문의 구조>
PL/SQL은 다음과 같은 구조를 가지고 있다.
DECLARE (선언부)
프로그램에서 사용하는 객체 정의
BEGIN (실행부)
프로그램의 구체적인 실행 내용
EXCEPTION (예외처리부)
프로그램에서 예외 발생 시 처리할 내용
END;
/
위 구문에서 DECLARE 나 EXCEPTION 등은 로직에 따라서 생략도 가능하며, BEGIN과 END 사이에 다시 중첩으로 실행 블록을 넣는 것도 가능하다.
<변수>
변수의 선언은 var1 NUMBER; 와 같이 앞쪽에 변수명을 적고 뒤쪽에 데이터 타입을 적는다. 선언 시 var1 NUMBER DEFAULT 20;과 같이 기본값을 설정할 수 있다.
변수의 대입은 var1 := 10; 과 같이 := 연산자를 사용해야 한다.
변수의 타입은 크게 스칼라, 콤포지트, 참조 3가지로 나눌 수 있다.
- 스칼라 타입 : 오라클에 의해 미리 정의된 데이터 타입이다. NUMBER, CHAR, VARCHAR2, DATE, BOOLEAN이 있다.
- 콤포지트 타입 : 사용자에 의해 정의되어야 하는 타입이다. RECORD, TABLE, Nested TABLE, VARRAY가 있다.
- 참조 타입 : 사용자가 정의하는 타입으로 처리 대상 데이터를 참조할 수 있는 특징이 있다. REF CURSOR가 있다.
이 외에 특수한 속성으로 %TYPE과 %ROWTYPE이 있다. 이 둘은 미리 정의된 변수의 데이터 타입을 참조할 때 사용한다.
먼저, %TYPE은 특정 컬럼의 데이터 타입을 참조할 때 쓰인다.
DECLARE
var1 dept.deptno%TYPE
BEGIN
SELECT deptno INTO var1 FROM dept WHERE location='KOREA'
END;
위와 같은 프로그램에서는 var1이 dept 테이블의 deptno 컬럼의 타입을 따라가는 것이다.
다음으로 %ROWTYPE은 특정 행 구조를 참조할 때 쓰인다.
DECLARE
row1 dept%ROWTYPE
BEGIN
SELECT deptno, dname, location INTO row1 FROM dept WHERE deptno=10;
END;
위와 같은 프로그램에서는 row1이 dept테이블의 특정 row의 구조(deptno, dname, location)의 데이터 타입을 모두 가져간다.
'DB' 카테고리의 다른 글
파티셔닝 (0) | 2019.02.09 |
---|---|
PL/SQL 조건, 반복 제어문 (0) | 2017.08.05 |
PL/SQL 시작하기 (0) | 2017.07.18 |
해쉬 인덱스 (0) | 2017.06.06 |
복합 인덱스 (0) | 2017.06.06 |