1) 익명 블록 : 이름이 없는 PL/SQL 블록을 말한다.
2) 이름 있는 블록
: DECLARE로 시작. 실행부와 예외 처리부에서 사용할 각종 변수, 상수, 커서 등을 선언. 변수 선언과 각 문장의 끝에 반드시 세미콜론(;)을 찍어야한다.
: 실제 로직을 처리하는 부분 각종 문장(일반 SQL문, 조건문, 반복문 등)이 온다. DML 문만 사용가능
: EXCEPTION 절로 시작. 실행부에서 로직 처리 중 오류 발생시 처리할 내용 기술 생략 가능
DECLARE
선언부
BEGIN
IF 조건식 THEN
수행 명령어;
ELSIF 조건식 THEN
수행 명령어;
ELSIF 조건식 THEN
수행 명렁어; …
ELSE
수행 명령어;
END IF;
END;
/
PL/SQL 을 주기적으로 사용해야 할 때 이름을 줘서 오라클에 저장 해 두는
PL/SQL 프로그램
트리거(TRIGGER)란 특정 상황이나 동작에 의해 이벤트가 발생할 경우 자동으로 실행되는 PL/SQL을 말한다.
CREATE [OR REPLACE] TRIGGER 트리거 이름
BEFORE | AFTER
INSERT OR UPDATE OR DELETE ON 테이블명
BEGIN
실행부
END;
loop문 : 실행문을 반복하다 조건식이 만족되면 LOOP문을 종료하고 빠져나옴
LOOP
실행문
EXIT WHER 조건식
IF 조건식 THEN
EXIT
END IF;
END LOOP;
for loop문
반복의 횟수가 결정되어 있는 LOOP문
FOR 변수(index) IN 최소값..최대값
LOOP
실행문
END LOOP;
처음부터 조건식이 존재하는 LOOP문
a := 1
WHILE 조건식 -- a < 10
LOOP
실행문
a := a+1;
END LOOP;
DECLARE
i number := 1;
BEGIN
LOOP
i := i+1;
dbms_output.put_line('반복문 출력');
EXIT WHEN i > 10;
END LOOP;
END;
/
BEGIN
FOR i IN 1..10
LOOP
dbms_output.put_line(i);
END LOOP;
END;
/
DECLARE
v_sum number := 0;
i number := 1;
BEGIN
WHILE i <= 100
LOOP
v_sum := v_sum + i;
i := i+1;
EXIT WHEN i = 11;
END LOOP;
dbms_output.put_line('합계 : '||v_sum);
END;
/
-- 1~100의 합계를 구하는데 10, 20의 숫자를 제외한 합계를 구하시오.
DECLARE
v_sum number := 0;
i number := 1;
BEGIN
WHILE i <= 100
LOOP
v_sum := v_sum + i;
i := i+1;
IF i = 10 THEN
v_sum := v_sum - 10;
ELSIF i = 20 THEN
v_sum := v_sum - 20;
END IF;
END LOOP;
dbms_output.put_line('합계 : '||v_sum);
END;
/
DECLARE
v_sum number := 0;
--i number := 1;
BEGIN
FOR i IN 1..100
LOOP
IF i = 10 THEN
dbms_output.put_line('');
ELSIF i = 20 THEN
dbms_output.put_line('');
ELSE
v_sum := v_sum + i;
END IF;
/*
IF i = 10 THEN
v_sum := v_sum - 10;
ELSIF i = 20 THEN
v_sum := v_sum - i;
END IF;
*/
END LOOP;
dbms_output.put_line('합계 : '||v_sum);
END;
/
BEGIN
FOR row IN (select * from book)
LOOP
dbms_output.put_line(row.bookid||' | '||row.bookname||' | '||row.publisher ||' | '|| row.price);
END LOOP;
END;