기본 구성
이름
IS(AS)
DECLARE
선언부
BEGIN
실행부
EXCEPTION
예외 처리부
END;
이름
이름은 사용하지 않을 수도 있다. 그러한 블록을 익명 블록이라고 한다.
선언부
DECLARE로 시작하며 실행부와 예외 처리에서 사용할 변수,상수 등을 설정하는 곳이다.
변수 선언
변수명 데이터타입 := 초깃값;
데이터 타입은 SQL 데이터 타입을 사용해도 된다.
상수 선언
상수명 CONSTANT 데이터타입 := 상수값;
상수는 변수와 다르게 한번 선언하면 값을 바꿀 수 없다.
PRAGMA
컴파일러가 실행되기 전에 처리하는 전처리기 역활을 하는 것으로 선언부에 명시하여 사용한다.
PRAGMA AUTONOMOUS_TRANSACTION
트랜잭션 처리를 담당하는 PRAGMA로, 주 트랜잭션이나 다른 트랜잭션에 영향을 받지 않고 독립적으로 현재 블록 내부에서 데이터베이스에 가해진 변경사항을 COMMIT이나 ROLLBACK하라는 지시를하는 역활을 한다.
PRAGMA EXCEPTION_INIT(예외명, 예외번호)
사용자 정의 예외 처리를 할 때 사용하는 PRAGMA이다. 특정 예외번호를 명시해서 컴파일러에 이 예외를 사용한다는 것을 알린다.
PRAGMA RESTRICT_REFERECES(서브 프로그램명, 옵션)
오라클 패키지를 사용할 때 선언하는 PRAGMA이다. 선언을 해놓으면 패키지에 속한 서브 프로그램에서 옵션 값에 따라 특정 동작을 제한할 때 사용된다.
PRAGMA SERIALLY_RESUABLE
패키지 메모리 관리를 쉽게 할 목적으로 사용되는 PRAGMA이다. 패키지에 선언된 변수에 대해 한번 호출된 후 메모리를 해제시킨다. (패키지 변수에 값을 할당해도 다음 번에 호출할 때는 할당한 값이 사라져변수를 초기값이나 NULL값으로 만듬)
실행부
실제 로직을 처리하는 부분이다. 일반 SQL문과 제어문이 들어갈 수 있고 DDL문은 사용할 수 없지만 DML문은 사용할 수 있다.
DML문을 사용할 때 선언부에서 선언한 변수를 사용하고 싶다면
SELECT쿼리명1, 쿼리명2, … INTO 변수명1, 변수명2, … FROM …
같이 INTO 절을 사용하여 타입에 맞는 변수를 넣어주면 된다.
다른 프로그래밍 언어와같이 문장마다 세미콜론을 붙어야 한다.
예외처리 : 실행부를 수행하다가 예외가 발생하면 EXCEPTION이하의 문장을 수행하는 곳이다.
연산자
** : 제곱 연산자
+,-,*,/ : 사칙연산
|| : 문자열 연결 연산자
=,<,>,<=,>=,<>,!=~=,^=,is null, Like, Between, in : 비교 연산자
not, and ,or : 논리 연산자
주석
실제 로직에서 처리가 안되는 부분으로 부가설명을 붙이기위한 용도로 사용한다.
한줄만 주석을 하고싶다면 ‘--‘(- 두개) 블록단위로 주석을 만들고 싶다면 양끝에/* */ 붙이면 된다.
라벨
라벨생성 : <<라벨명>>
프로그램 상에 특정 부분에 이름을 부여하는 것으로 가독성을 높이는 것과 GOTO문을 사용할 때 사용한다.
GOTO 문
라벨명이 있는 곳으로 이동하는 제어문 이다.
GOTO 라벨명;
PL/SQL 제어문
다른 프로그래밍 언어에서 제공하는 제어문들을 PL/SQL에서도 지원한다.
IF, CASE, LOOP, WHILE, FOR, CONTINUE, GOTO 등 이있다.
IF문
IF 조건 THEN
조건 처리;
END IF;
IF 조건 THEN
조건 처리;
ELSE
조건 처리
END IF;
IF 조건1 THEN
조건 처리
ELSIF 조건2 THEN
조건 처리
ELSE
조건 처리
END IF;
다른 프로그래밍 언어에서 사용하는것과 유사한 IF문이다. 단 else if로 썼던 것을 elsif 로 쓴다는 점과 if문이 끝나는 곳에 세미콜론’;’을 붙여줘야 한다는 점이 다르다.
CASE문
If문과 같은 처리를하는 제어문이다.
CASE 표현식
WHEN 결과1 THEN
처리문1;
WHEN 결과2 THEN
처리문2;
ELSE
처리문 3;
END CASE;
CASE WHEN 표현식1 THEN
처리문1;
CASE WHEN 표현식2 THEN
처리문2;
ELSE
처리문 3;
END CASE;
LOOP 문
특정조건을 만존할 때까지 무한 반복하는 제어문 이다.
LOOP
연산;
EXIT WHEN 조건;
END LOOP;
WHILE문
먼저 조건을 대조후 반복문에 들어가는 제어문이다.
WHILE 조건
LOOP
연산;
END LOOP;
FOR문
인덱스의 초기값과 최종값을 정하여 인덱스가 최종값이 될때까지 반복하는 제어문이다.
FOR 인덱스 IN [REVERSE] 초깃값..최종값
LOOP
연산;
END LOOP;
CONTINUE
위의 반복문들 내에 사용하는 제어문으로 특정조건에서 CONTINUE아래 로직을 생략하고 상단의 루프로 건너가는 역활을 한다.
CONTINUE WHEN 조건;
'프로그래밍 > 오라클' 카테고리의 다른 글
(오라클) PL/SQL 함수와 프로시저 (0) | 2016.07.10 |
---|---|
(오라클) With 절 (0) | 2016.07.10 |
(오라클) 계층형 쿼리 (0) | 2016.07.10 |
(오라클) 조인, 안시 조인 (0) | 2016.07.10 |
(오라클) SQL 함수 (0) | 2016.07.10 |