3.14.2 CREATE PUBLIC PROCEDURE(パブリック手続き定義)
(1) 機能
すべてのユーザから,認可識別子でルーチン識別子を修飾しなくても使用できる手続き(パブリック手続き)を定義できます。
(2) 使用権限
- スキーマを所有するユーザ
-
自分が所有するパブリック手続きを定義できます。
(3) 形式
CREATE PUBLIC 手続き本体
(4) オペランド
(a) PUBLIC
手続きをパブリック手続きとして定義する場合に指定します。
パブリック手続きにすると,同じ内容の手続きをユーザごとに定義しなくても,一つの手続きをルーチン識別子だけを指定して複数のユーザで使用できます。
(b) 手続き本体
「〔認可識別子.〕ルーチン識別子」以外の説明については,「CREATE PROCEDURE(手続き定義)」と同じです。
〔認可識別子.〕ルーチン識別子
- 認可識別子
-
パブリック手続きのため,認可識別子は指定できません。
- ルーチン識別子
-
定義するパブリック手続きのルーチンの名前を指定します。
(5) 共通規則
-
手続き本体の「〔認可識別子.〕ルーチン識別子」の認可識別子は指定できません。
-
ルーチン識別子は,システム内のすべての手続き中で同じ識別子を使用できません。
-
手続きを特定するための特定名は,PUBLIC.ルーチン識別子と同じです。
-
手続き本体中に指定したCALL文の手続き名がPUBLICで修飾されている場合,現在定義しようとしているパブリック手続きと,認可識別子,ルーチン識別子が一致するパブリック手続きは指定できません。
手続き本体中に指定したCALL文の手続き名が認可識別子で修飾されていない場合,現在定義しようとしているパブリック手続きと,ルーチン識別子が一致する手続きは指定できません。
-
ALTER PROCEDURE,又はALTER ROUTINEでSQLコンパイルオプションを指定する場合,再作成する手続きの元のCREATE PUBLIC PROCEDUREにSQLコンパイルオプションを反映してできるSQL文は,SQL文の最大長を超えないようにしてください。
-
その他の規則は,「CREATE PROCEDURE(手続き定義)」と同じです。
(6) 留意事項
-
CREATE PUBLIC PROCEDUREは,OLTP下のX/Openに従ったUAPから指定できません。
-
ディクショナリ表の所有者を格納する列(SQL_ROUTINES表のROUTINE_SCHEMA列など)にはPUBLICが設定されます。また,パブリック手続きを定義した認可識別子はSQL_ROUTINES表のROUTINE_CREATOR列に格納されます。
-
パブリック手続きの削除は,DROP PUBLIC PROCEDUREで行います。
-
その他の留意事項は,「CREATE PROCEDURE(手続き定義)」と同じです。