PL/SQLの基本

コメント

1行コメント

 先頭に”–“を記述する

--comment

複数行コメント

 開始に”/*”を、終了に”*/”を記述する。

/* コメント1行目
  コメント2行目 */

基本構文

宣言を記述する箇所と、ロジックを記述箇所が分かれている。なんかCOBOLっぽい。。。

DECLARE
-- 宣言
BEGIN
--ロジックを記述
END;

変数

変数の宣言

宣言部に以下のように記述する。
  変数名 データ型;

DECLARE
wk_number NUMBER(2);
BEGIN
・・・
END;

変数の型

  数値 NUMBER
  文字 VARCHAR2
 日付 DATE

変数の型(特殊)

テーブル項目型

変数名 テーブル名.テーブル項目名%TYPE;

テーブルレコード型

変数名 テーブル名%ROWTYPE;

変数へ値を代入する

変数名 := 値;

定数

宣言部に以下のように記述する。
  定数名 CONSTANT データ型 := 定数値;

デバッグ出力

以下のように記述。
DBMS_OUTPUT.PUT_LINE(出力内容);

データを取得してカーソルを回す

カーソルの定義

宣言部に以下のように記述する。

DECLARE
  CURSOR カーソル名 IS
SELECT文
  ;
BEGIN
END;
ex)記述例
DECLARE
    CURSOR curQ01 IS
        SELECT
            EMPNO
           ,ENAME
           ,JOB
        FROM
            EMP
        WHERE
            EMPNO IS NOT NULL
        ;
BEGIN

カーソルを回す

FOR レコード変数名 IN カーソル名 LOOP
END LOOP;

レコード変数名は宣言文に記述する必要なし。ただし、FOR文の中でしか利用できない。

ex)記述例
DECLARE
-- カーソルの宣言
CURSOR curQ01 IS
SELECT
EMPNO
,ENAME
,JOB
FROM
EMP
WHERE
EMPNO IS NOT NULL
;

BEGIN

FOR recQ01 IN curQ01 LOOP
DBMS_OUTPUT.PUT_LINE('EMPNO:'|| recQ01.EMPNO || ' ENAME:' || recQ01.ENAME || ' JOB:' || recQ01.JOB);
END LOOP;
END;

コメント