ここではPL/SQLの制御文について紹介します。
目次
IF文
IF文は、条件に応じて処理を実行します。
構文
IF {条件1} THEN
{条件1}がTRUEの場合の処理
ELSEIF {条件2} THEN
{条件2]がTRUEの場合の処理
ELSE
条件がFALSEの場合の処理
END IF
;
以下はIF文のサンプルです。
CREATE OR REPLACE PROCEDURE PROC_SAMPLE
IS
w_EMPNO emp.emp_no%TYPE := '001';
w_SEX emp.emp_sex%TYPE;
BEGIN
SELECT emp_sex INTO w_SEX FROM emp
WHERE emp_no = w_EMPNO;
IF w_SEX = '1'
THEN
DBMS_OUTPUT.PUT_LINE('男');
ELSIF w_SEX = '2'
THEN
DBMS_OUTPUT.PUT_LINE('女');
ELSE
DBMS_OUTPUT.PUT_LINE('不明');
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error');
END;
/
CASE文
CASE文は、一連の条件を基に対応する処理を実行します。
構文
CASE {値}
WHEN {比較値1}
{値} が {比較値1} と一致した場合の処理
WHEN {比較値2]
{値} が {比較値2} と一致した場合の処理
ELSE
{値} が比較値と一致しない場合の処理
END CASE
;
以下はCASE文のサンプルです。
CREATE OR REPLACE PROCEDURE PROC_SAMPLE
IS
w_EMPNO emp.emp_no%TYPE := '001';
w_SEX emp.emp_sex%TYPE;
BEGIN
SELECT emp_sex INTO w_SEX FROM emp
WHERE emp_no = w_EMPNO;
CASE w_SEX
WHEN '1' THEN
DBMS_OUTPUT.PUT_LINE('男');
WHEN '2' THEN
DBMS_OUTPUT.PUT_LINE('女');
ELSE
DBMS_OUTPUT.PUT_LINE('不明');
END CASE;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error');
END;
/
FOR LOOP文
FOR LOOP文は、指定した回数になるまで処理を実行します。
構文
FOR {カウンタ変数} IN {最小値}..{最大値} LOOP
繰り返し処理
END LOOP;
;
以下はFOR文のサンプルです。
CREATE OR REPLACE PROCEDURE PROC_SAMPLE
IS
BEGIN
FOR i IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE('カウント' || i);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error');
END;
/
WHILE LOOP文
WHILE LOOP文は、条件がTRUEの場合に処理を実行します。
構文
WHILE {繰り返し条件} LOOP
繰り返し処理
END LOOP;
;
以下はWHILE文のサンプルです。
CREATE OR REPLACE PROCEDURE PROC_SAMPLE
IS
w_COUNT NUMBER(3);
BEGIN
w_COUNT := 1;
WHILE w_COUNT < 10 LOOP
DBMS_OUTPUT.PUT_LINE('カウント' || w_COUNT);
w_COUNT := w_COUNT + 1;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error');
END;
/
EXIT文
EXIT文は、ループの反復処理を終了します。
以下はEXIT文のサンプルです。
CREATE OR REPLACE PROCEDURE PROC_SAMPLE
IS
w_COUNT NUMBER(3);
BEGIN
w_COUNT := 1;
WHILE w_COUNT < 10 LOOP
-- カウンタが3になったらループを抜ける
IF w_COUNT = 3
THEN
EXIT;
END IF;
DBMS_OUTPUT.PUT_LINE('カウント' || w_COUNT);
w_COUNT := w_COUNT + 1;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error');
END;
/
CONTINUE文
CONTINUE文は、ループの反復処理をスキップします。
以下はCONTINUE文のサンプルです。
CREATE OR REPLACE PROCEDURE PROC_SAMPLE
IS
BEGIN
FOR i IN 1..10 LOOP
-- カウンタが3の場合は処理をスキップする
IF i = 3
THEN
CONTINUE;
ELSE
DBMS_OUTPUT.PUT_LINE('カウント' || i);
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error');
END;
/
以上、PL/SQLの制御文ついて解説しました。