プロシージャ
-
プロシージャの定義
プロシージャは、平たく言うと名前付きPL/SQLプログラム。無名ブロックと異なり、登録しておくことで呼び出しが可能。
-
ローカルプロシージャの後に変数宣言はできない。(エラーになる)
-
"PROCEDURE プロシージャ名 [(パラメータリスト)]" の部分はプログラム仕様と呼ばれる。
-
ソースコードを変更する場合は "CREATE OR REPLACE" で宣言する。
-
DROP → CREATE で行うと、付与した実行権限等が消えてしまう。
-
直近のエラー確認は
SHOW ERRORS
コマンドで行う。
-
プロシージャのパラメータ
-
パラメータの形は下記の通り。
パラメータ名 パラメータモード データ型 [{ DEFAULT | := } デフォルト値]
-
例
CREATE OR REPLACE PROCEDURE (&bold(){param1 NUMBER, param2 VERCHAR2})
{ IS | AS }
[宣言部]
BEGIN
[実行部]
[EXCEPTION 例外処理部)]
END [プロシージャ名];
-
複数のパラメータはカンマで区切る。
-
パラメータのデータ型に精度(桁数)は指定できない
-
%TYPEと%ROWTYPEを使用することはできる。
-
パラメータモード
|
IN
|
OUT
|
IN OUT
|
宣言の省略
|
〇
|
×
|
×
|
デフォルトの値の使用
|
〇
|
×
|
×
|
プログラム内での値の代入
|
×
|
〇
|
〇
|
実行時にリテラル使用
|
〇
|
×
|
×
|
-
プロシージャのコール
-
SQLPlus上でのコールはEXECUTEコマンドを使用する。
-
PL/SQL内部でのコールは、Java等と同様に プロシージャ名; で呼び出せる。
-
呼び出す際のバインド変数は、SQLPLUS上ではVALIABLEコマンドを使用する。
-
実パラメータを受取るには :バインド変数名 とする。
-
ストアドプログラム内にVALIABLE変数は記述できない。(コンパイルエラー)
-
VARIABLEコマンドで使用できるデータ型
数値
|
NUMBER, BINARY_FLOAT, BINARY_DOUBLE
|
文字(固定長)
|
CHAR, NCHAR
|
文字(可変長)
|
VARCHAR2, NVARCHAR2
|
LOB
|
CLOB, NCLOB
|
REFカーソル
|
REFCURSOR
|
VARIABLE g_telno VARCHAR2(30)
EXECUTE :g_telno := '12345678901'
PL/SQLプロシージャが正常に完了しました。
EXECUTE change_tel(:g_telno)
PL/SQLプロシージャが正常に完了しました。
最終更新:2011年08月11日 08:29