ALL_PROCEDURES, DBA_PROCEDURES, USER_PROCEDURES

ALL_PROCEDURES, DBA_PROCEDURES, USER_PROCEDURESはOracleのストアド・プロシージャおよびストアド・ファンクションに関する情報を格納しているデータ・ディクショナリ・ビューです。構造や格納されている情報についてご紹介します。

ALL_PROCEDURES

ALL_PROCEDURESは、現在のユーザがアクセスできるストアド・プロシージャおよびストアド・ファンクションを示すデータ・ディクショナリ・ビューである。

ALL_PROCEDURESの構造
データ型 NULL 説明
OWNER VARCHAR2(128) プロシージャの所有者
OBJECT_NAME VARCHAR2(128) パッケージ名、プロシージャ名またはファンクション名
PROCEDURE_NAME VARCHAR2(128) NULL、プロシージャ名またはファンクション名
OBJECT_ID NUMBER オブジェクトの識別子
SUBPROGRAM_ID NUMBER サブプログラムの識別子
OVERLOAD VARCHAR2(40) オーバロード
OBJECT_TYPE VARCHAR2(13) オブジェクトの型名
AGGREGATE VARCHAR2(3) プロシージャが集計関数かどうか
PIPELINED VARCHAR2(3) プロシージャがパイプライン・テーブル・ファンクションかどうか
IMPLTYPEOWNER VARCHAR2(128) 実装タイプがある場合は、その所有者
IMPLTYPENAME VARCHAR2(128) 実装タイプがある場合は、その名前
PARALLEL VARCHAR2(3) プロシージャまたはファンクションがパラレルで使用可能か
INTERFACE VARCHAR2(3) ODCIインタフェースを使用して実装されたテーブル・ファンクションかどうか
DETERMINISTIC VARCHAR2(3) DETERMINISTICであると宣言されているか
AUTHID VARCHAR2(12) DEFINER または CURRENT_USER(実行者)として実行するために宣言されているか
ORIGIN_CON_ID VARCHAR2(256) データの発生元のコンテナのID

OWNER

ALL_PROCEDURESデータディクショナリ・ビューから所有者を取得する。

SELECT OWNER FROM ALL_PROCEDURES WHERE OBJECT_NAME = 'FOO' AND PROCEDURE_NAME = 'BAR'

OBJECT_NAME

パッケージに含まれるプロシージャまたはファンクションの場合、パッケージ名を示す。

パッケージに含まれないプロシージャまたはファンクションの場合、プロシージャ名またはファンクション名を示す。

PROCEDURE_NAME

パッケージに含まれるプロシージャまたはファンクションの場合、プロシージャ名またはファンクション名を示す。

パッケージに含まれないプロシージャまたはファンクションの場合、NULLとなる。

OBJECT_TYPE

オブジェクトの型名

FUNCTION
ストアド・ファンクション
PROCUDEURE
ストアド・プロシージャ
TRIGGER
データベース・トリガー

現在のユーザがアクセスできるストアド・ファンクションを問い合わせるSQL文の例を次に示す。

SQL> SELECT * FROM ALL_PROCEDURES WHERE OBJECT_TYPE = 'FUNCTION';

AGGREGATE

プロシージャがパイプライン・テーブル・ファンクションかどうか。

YES
プロシージャがパイプライン・テーブル・ファンクションである。
NO
プロシージャがパイプライン・テーブル・ファンクションでない。

INTERFACE

プロシージャ/ファンクションが、ODCIインタフェースを使用して実装されたテーブル・ファンクションかそうでないか。

YES
プロシージャ/ファンクションが、ODCIインタフェースを使用して実装されたテーブル・ファンクションである。
NO
プロシージャ/ファンクションが、ODCIインタフェースを使用して実装されたテーブル・ファンクションでない。

DETERMINISTIC

プロシージャ/ファンクションがDETERMINISTICであると宣言されているか宣言されていないか。

YES
プロシージャ/ファンクションがDETERMINISTICであると宣言されている。
NO
プロシージャ/ファンクションがDETERMINISTICであると宣言されていない。

DBA_PROCEDURES

DBA_PROCEDURESは、データベース内のすべてのプロシージャ又はファンクションを示すデータ・ディクショナリ・ビューである。

DBA_PROCEDURESの構造は、ALL_PROCEDURESと同じである。

DBA_PROCEDURESにどんな列があるのかを確認する。

DESCRIBE DBA_PROCEDURES

USER_PROCEDURES

USER_PROCEDURESは、現在のユーザが所有するプロシージャ又はファンクションを示すデータ・ディクショナリ・ビューである。

USER_PROCEDURESの構造は、OWNER列が無いことを除き、ALL_PROCEDURESやDBA_PROCEDURESと同じである。

自分が所有するすべてのプロシージャとファンクションの名前を取得する。

SELECT OBJECT_NAME, PROCEDURE_NAME FROM USER_PROCEDURES

データ・ディクショナリ・ビュー

ファンクションおよびプロシージャに関するデータ・ディクショナリ・ビューの一覧を次に示す。

ALL_ARGUMENTS
現在のユーザーがアクセスできるファンクションおよびプロシージャ内の引数
DBA_ARGUMENTS
データベースで使用可能なファンクションおよびプロシージャの引数のリスト
DBA_PROCEDURES
データベース内のすべてのプロシージャまたはファンクション
USER_ARGUMENTS
現在のユーザーが所有するファンクションおよびプロシージャ内の引数
USER_PROCEDURES
現在のユーザが所有するプロシージャまたはファンクション