Oracleデータベースのパッケージとは、関連するプロシージャ、ファンクション、変数、定数、カーソル及び例外をまとめたものであり、データベースに格納される。 パッケージには、Oracleデータベースにあらかじめ用意されているパッケージと、ユーザがPL/SQLで独自に作るパッケージがある。
Oracleデータベースには、あらかじめ次のストアド・パッケージが用意されている。
DBMS_STANDARDとは、PL/SQLの標準パッケージである。PL/SQLからDBMS_STANDARDパッケージを呼び出す場合、パッケージ名の指定を省略できる。
プロシージャ | 説明 |
---|---|
RAISE_APPLICATION_ERROR | ユーザ独自のエラーメッセージ(ORA-n)を発生させる。 |
RAISE_APPLICATION_ERRORは、ユーザ独自のエラーメッセージ(ORA-n)を発生させるプロシージャである。
RAISE_APPLICATION_ERROR(error_number, message)
RAISE_APPLICATION_ERROR(error_number, message, add_stack)
UTL_FILE は、SQLプログラムでOSのテキストファイルを読み書きする。
ストアド・パッケージを操作するSQL文の一覧を以下に示す。
CALL は、パッケージに含まれるプロシージャ又はファンクションを実行するSQL文である。
SQL> CALL mypkg.myproc(1);
CREATE PACKAGE は、パッケージ仕様部を作成するSQL文である。
CREATE PACKAGE BODY は、パッケージ本体を作成するSQL文である。
ALTER PACKAGE は、パッケージを明示的に再コンパイルするSQL文である。
DROP PACKAGE は、パッケージ仕様部を削除するSQL文である。
DROP PACKAGE BODY は、パッケージ本体を削除するSQL文である。
ストアド・パッケージに関するSQL*Plusコマンドを以下に示す。
DESCRIBE は、パッケージに含まれるプロシージャ及びファンクションの定義を表示するSQL*Plusコマンドである。
ストアド・パッケージを操作するために必要なシステム権限の一覧を以下に示す。
CREATE PRODECURE は、自分のスキーマにプロシージャ、ファンクション及びパッケージを作成するシステム権限である。
CREATE ANY PRODECURE は、任意のスキーマにプロシージャ、ファンクション及びパッケージを作成するシステム権限である。
ALTER ANY PRODECURE は、任意のスキーマのプロシージャ、ファンクション及びパッケージを変更するシステム権限である。
DROP ANY PRODECURE は、任意のスキーマのプロシージャ、ファンクション及びパッケージを削除するシステム権限である。
ストアド・パケージを操作するために必要なオブジェクト権限の一覧を以下に示す。
EXECUTE はストアド・パッケージを実行できるオブジェクト権限である。
パッケージの実行権限を付与するSQL文の例を次に示す。
SQL> GRANT EXECUTE ON tsuka.mypkg TO scott;
パッケージの実行権限を剥奪するSQL文の例を次に示す。
SQL> REVOKE EXECUTE ON tsuka.mypkg FROM scott;
ストアド・パッケージに関するデータ・ディクショナリ・ビューの一覧を以下に示す。
ALL_PROCEDURES は、現在のユーザがアクセスできるプロシージャ、ファンクション及びパッケージを示すデータ・ディクショナリ・ビューである。
ALL_SOURCE は、現在のユーザがアクセスできるストアドオブジェクトのテキストソースを示すデータ・ディクショナリ・ビューである。
DBA_PROCEDURES は、すべてのプロシージャ、ファンクション及びパッケージを示すデータ・ディクショナリ・ビューである。
DBA_SOURCE は、すべてのストアドオブジェクトのテキストソースを示すデータ・ディクショナリ・ビューである。
USER_PROCEDURES は、現在のユーザが所有するプロシージャ、ファンクション及びパッケージを示すデータ・ディクショナリ・ビューである。
USER_SOURCE は、現在のユーザが所有するストアドオブジェクトのテキストソースを示すデータ・ディクショナリ・ビューである。