【PL/SQL】Oracle PL/SQL入門【第4回 処理を書いてみよう】
目次
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です
次回は、今回の処理をもう少し発展させていきたいと思います。
次回もお楽しみに!