【PL/SQL】Oracle PL/SQL入門【第4回 処理を書いてみよう】

2020年8月21日

PL/SQL入門 プロシージャで処理を書いてみよう vol.1

第1回~第3回でプロシージャを作成、実行してみましたが、今回から本格的な処理を書いて行こうと思います。

PL/SQL入門で、画面に出力する処理を最初に書くのがよくありますが、
実務でPL/SQLを使用する時は、画面表示させるよりもデータベース操作が大半だと思います。
※printfデバッグや、処理結果を画面に表示等があると思いますが、まずはデータベース操作です

STEP1. テスト用のテーブルを作成します

まずは、テキストエディターでテーブル作成のスクリプトを作成します。
下記の内容をエディタで記述しテキストとして保存して下さい。
ここでは、「ctbl-4.sql」ファイルとして保存します。

CREATE TABLE TBL_TEST(
    ID NUMBER(5),
    NAME VARCHAR2(200),
    TNK NUMBER(8,2),
    CONSTRAINT TBL_TEST_KEY01 PRIMARY KEY(ID)
)
/

STEP2. スクリプトファイルの置き場所

第1回目と同じ様に、作成したスクリプトは「C:\plsql」に置きます。

STEP3. SQL*Plusからスクリプト実行します

STEP2.で配置したスクリプトを実行します。
SQL*Plusから「@C:\plsql\ctbl-4.sql」と入力します。

Enterキー押すと、「表が作成されました。」と表示されます。

STEP4. 作成されたテーブルの確認

Oracle SQL Developerの左のツリーで「表」選択します。
作成した「TBL_TEST」表の存在を確認します。

STEP5. さっそく処理を書いてみよう

さっそく、テキストエディタでPL/SQLをコーディングしてみます。
下記の内容をエディタで記述しテキストとして保存して下さい。
ここでは、「4.sql」ファイルとして保存しました。

CREATE OR REPLACE PROCEDURE TEST4 IS
BEGIN
    INSERT INTO TBL_TEST VALUES(1, 'TEST1’, 100);
    INSERT INTO TBL_TEST VALUES(2, 'TEST2’, 200);
    INSERT INTO TBL_TEST VALUES(3, 'TEST3’, 300);
    INSERT INTO TBL_TEST VALUES(4, 'TEST4’, 400);
    COMMIT;
END;
/
show errors

うまく、コンパイルできたでしょうか?
ファイルの配置、コンパイル方法は第1回目を参照して下さい。
第1回目と違う箇所としては、スクリプトファイルの一番下に「show errors」があります。
この記述があると、コンパイル時に、プログラムにエラーがあるとエラー内容を画面に表示してくれます。
※「COMMIT;」も違いますが、INSERTの結果を反映する為のコミットです

プログラムの内容としては、第1回目に「NULL;」と記述していた箇所に「INSERT」文が並んでいるだけです。

STEP6. プロシージャを実行してみよう

第2回で実施した要領で、プロシージャを実行して見て下さい。
プロシージャ名は「TEST4」です。
プロシージャの実行が正常に完了したら、Oracle SQL Developerでテーブルのデータを確認してみましょう。

左のツリーから「TBL_TEST」を選択し、右タブの2つ目「データ」タブでテーブル内容を確認できます。
PL/SQLで記述したINSERT結果がテーブルに反映されていると思います。

テーブルデータの結果だけを見ると、PL/SQLでなくてもできるよ~となりますが、
他の言語と違いPL/SQLはOracle上(サーバー)で動作しています。

■他の言語だと
INSERT(1回目) ⇒ 通信 ⇒ Oracle(サーバー)で処理
INSERT(2回目) ⇒ 通信 ⇒ Oracle(サーバー)で処理
INSERT(3回目) ⇒ 通信 ⇒ Oracle(サーバー)で処理
INSERT(4回目) ⇒ 通信 ⇒ Oracle(サーバー)で処理
となります。

■PL/SQLだと
PL/SQL実行 ⇒ 通信 ⇒ Oracle(サーバー)で4回のINSERT文実行
となります。

通信負荷が減ると言うのが一番の利点ではないでしょうか。
他には、データベース操作の記述が簡単な所です。

■他の言語だと
INSERTを発行する為にデータベース操作のオブジェクトを作成して・・・となります

■PL/SQLだと
INSERT文を処理としてベタ書きでOKです

次回は、今回の処理をもう少し発展させていきたいと思います。
次回もお楽しみに!

記事を読む >> Oracle PL/SQL入門【第5回 クルくる回してみよう】

【PL/SQL】メニュー

サイトマップ

2020年8月21日Oracle,PL/SQL,データベース,プログラムPL/SQL入門

Posted by こっぷ