기본 구성
이름
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

+ Recent posts