Oracleデータベースのストアド・パッケージ

Oracleデータベースのパッケージとは、関連するプロシージャファンクション、変数、定数、カーソル及び例外をまとめたものであり、データベースに格納される。 パッケージには、Oracleデータベースにあらかじめ用意されているパッケージと、ユーザがPL/SQLで独自に作るパッケージがある。

目次

  1. データベースにあらかじめ用意されているパッケージ
    1. DBMS_ALERT
    2. DBMS_LOCK
    3. DBMS_OUTPUT
    4. DBMS_PIPE
    5. DBMS_STANDARD
      1. RAISE_APPLICATION_ERROR
    6. DBMS_STATS
    7. DBMS_XPLAN
    8. UTL_FILE
  2. SQL
    1. CALL
    2. CREATE PACKAGE
    3. CREATE PACKAGE BODY
    4. ALTER PACKAGE
    5. DROP PACKAGE
    6. DROP PACKAGE BODY
  3. SQL*Plusコマンド
    1. DESCRIBE
  4. システム権限
    1. CREATE PRODECURE
    2. CREATE ANY PRODECURE
    3. ALTER ANY PRODECURE
    4. DROP ANY PRODECURE
  5. オブジェクト権限
    1. EXECUTE
  6. データ・ディクショナリ・ビュー
    1. ALL_PROCEDURES
    2. ALL_SOURCE
    3. DBA_PROCEDURES
    4. DBA_SOURCE
    5. USER_PROCEDURES
    6. USER_SOURCE

Oracleデータベースにあらかじめ用意されているパッケージ

Oracleデータベースには、あらかじめ次のストアド・パッケージが用意されている。

DBMS_ALERT
データベース・イベント(アラート)の非同期通知を提供する。
DBMS_LOCK
Oracleロック・マネージメント・サービスへのインタフェースを提供する。
DBMS_OUTPUT
PL/SQLブロックやサブプログラムからのメッセージ出力を提供する。
DBMS_PIPE
同じインスタンスにある複数のセッションの通信を提供する。
DBMS_STANDARD
各種のユーティリティ・サブプログラムを提供する。
DBMS_STATS
データベース・オブジェクト用に収集したオプティマイザの統計情報を表示・変更する。
DBMS_XPLAN
PLANで出力した実行計画を読み書きする。

DBMS_STANDARD

DBMS_STANDARDとは、PL/SQLの標準パッケージである。PL/SQLからDBMS_STANDARDパッケージを呼び出す場合、パッケージ名の指定を省略できる。

DBMS_STANDARDのプロシージャ
プロシージャ 説明
RAISE_APPLICATION_ERROR ユーザ独自のエラーメッセージ(ORA-n)を発生させる。

RAISE_APPLICATION_ERROR

RAISE_APPLICATION_ERRORは、ユーザ独自のエラーメッセージ(ORA-n)を発生させるプロシージャである。

RAISE_APPLICATION_ERROR(error_number, message)
RAISE_APPLICATION_ERROR(error_number, message, add_stack)
error_number
エラー番号を-20000から-20999の範囲で指定する。
message
エラーメッセージを指定する。
add_stack
TRUEを指定した場合、エラーは以前のスタックに配置される。FALSEを指定した場合、エラーは以前のエラーをすべて置換する。

UTL_FILE

UTL_FILE は、SQLプログラムでOSのテキストファイルを読み書きする。

SQL文

ストアド・パッケージを操作するSQL文の一覧を以下に示す。

CALL

CALL は、パッケージに含まれるプロシージャ又はファンクションを実行するSQL文である。

SQL> CALL mypkg.myproc(1);

CREATE PACKAGE

CREATE PACKAGE は、パッケージ仕様部を作成するSQL文である。

CREATE PACKAGE BODY

CREATE PACKAGE BODY は、パッケージ本体を作成するSQL文である。

ALTER PACKAGE

ALTER PACKAGE は、パッケージを明示的に再コンパイルするSQL文である。

DROP PACKAGE

DROP PACKAGE は、パッケージ仕様部を削除するSQL文である。

DROP PACKAGE BODY

DROP PACKAGE BODY は、パッケージ本体を削除するSQL文である。

SQL*Plusコマンド

ストアド・パッケージに関するSQL*Plusコマンドを以下に示す。

DESCRIBE

DESCRIBE は、パッケージに含まれるプロシージャ及びファンクションの定義を表示するSQL*Plusコマンドである。

システム権限

ストアド・パッケージを操作するために必要なシステム権限の一覧を以下に示す。

CREATE PRODECURE

CREATE PRODECURE は、自分のスキーマにプロシージャ、ファンクション及びパッケージを作成するシステム権限である。

CREATE ANY PRODECURE

CREATE ANY PRODECURE は、任意のスキーマにプロシージャ、ファンクション及びパッケージを作成するシステム権限である。

ALTER ANY PRODECURE

ALTER ANY PRODECURE は、任意のスキーマのプロシージャ、ファンクション及びパッケージを変更するシステム権限である。

DROP ANY PRODECURE

DROP ANY PRODECURE は、任意のスキーマのプロシージャ、ファンクション及びパッケージを削除するシステム権限である。

オブジェクト権限

ストアド・パケージを操作するために必要なオブジェクト権限の一覧を以下に示す。

EXECUTE

EXECUTE はストアド・パッケージを実行できるオブジェクト権限である。

パッケージの実行権限を付与するSQL文の例を次に示す。

SQL> GRANT EXECUTE ON tsuka.mypkg TO scott;

パッケージの実行権限を剥奪するSQL文の例を次に示す。

SQL> REVOKE EXECUTE ON tsuka.mypkg FROM scott;

パッケージに関するデータ・ディクショナリ

ストアド・パッケージに関するデータ・ディクショナリ・ビューの一覧を以下に示す。

ALL_PROCEDURES

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

ALL_SOURCE

ALL_SOURCE は、現在のユーザがアクセスできるストアドオブジェクトのテキストソースを示すデータ・ディクショナリ・ビューである。

DBA_PROCEDURES

DBA_PROCEDURES は、すべてのプロシージャ、ファンクション及びパッケージを示すデータ・ディクショナリ・ビューである。

DBA_SOURCE

DBA_SOURCE は、すべてのストアドオブジェクトのテキストソースを示すデータ・ディクショナリ・ビューである。

USER_PROCEDURES

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

USER_SOURCE

USER_SOURCE は、現在のユーザが所有するストアドオブジェクトのテキストソースを示すデータ・ディクショナリ・ビューである。