コメント
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;
コメント