はじめに
業務でPL/SQLを使う機会がありました。ネットで調べると基本的な説明や書き方はすぐに見つか流のですが、全体的な形が中々イメージできなかったため苦戦してしまいました(特にパッケージを使ったサンプル等がなかなか見つかりませんでした)。
今回は未来の自分のメモとしての役割も含め、PL/SQLの大まかな形をまとめてみることにしました
PL/SQL
以下にPL/SQLの簡単なサンプルを記載します。
program.sql
--パッケージ仕様
CREATE OR REPLACE PACKAGE PACKAGENAMES AS
--関数定義
FUNCTION FUNCTIONNAME(
argument IN NUMBER
) RETURN NUMBER;
END PACKAGENAMES;
/
SHOW ERRORS
--パッケージ本体
CREATE OR REPLACE PACKAGE BODY PACKAGENAMES AS
-- ここに関数の処理を記述する
FUNCTION FUNCTIONNAME(
argument IN NUMBER
) RETURN NUMBER
IS
-- ここで変数を定義する
error_code number(5);
error_message varchar2(1024);
BEGIN
-- ここにSQL文を記載する
-- 正常終了
RETURN 0;
-- エラーが起こった場合の処理
EXCEPTION
WHEN OTHERS THEN
-- 異常終了
RETURN 1;
END FUNCTIONNAME;
END PACKAGENAMES;
/
SHOW ERRORS
実行について
PL/SQLを作成したということはどこかで実行することになると思われます。
今回はBATで実行するための手順を記載します。
まずは上で作成したprogram.sqlを実際に呼び出すためのPL/SQLを作成します。
call.sql
set serveroutput on;
DECLARE
ResultCD NUMBER;
BEGIN
ResultCD := PACKAGENAMES.FUNCTIONNAME(&1);
DBMS_OUTPUT.PUT_LINE('ResultCD='||ResultCD);
END;
/
exit;
次にこのcall.sqlを呼び出すためのBATを作成します。
call.bat
@echo off
rem 引数を設定
set argument=25
sqlplus ユーザー/パス@接続 @実行ファイル %argument%
PAUSE
exit
おわりに
PL/SQLの書き方やコンパイルの仕方については、少し調べたら出てくるので今回は省略しています。かなりあっさりとした内容になってしまいましたが、PL/SQLを書くときの基本形はこんな感じかなと思います。