1 TimesTenが提供するPL/SQLパッケージおよびタイプの概要

TimesTenにはPL/SQLパッケージのセットが付属しています。これらのパッケージによって、データベース機能が拡張され、SQL機能へのPL/SQLアクセスが可能になります。

このマニュアルでは、これらのパブリック・パッケージについて説明します(TimesTenが提供するPL/SQLパッケージの概要で簡単に説明しています)。PL/SQL言語自体の一部であるパッケージ、あるいは、TimesTenまたはOracle Database内部でのみ使用されるパッケージは示しておらず、このマニュアルでは説明していません。

この章の内容は次のとおりです。

PL/SQLおよびPL/SQLパッケージの詳細は、次を参照してください。

パッケージの概要

パッケージとは、関連するプログラム・オブジェクトをカプセル化した集合体で、データベースにまとめて格納されています。プログラム・オブジェクトには、プロシージャ、ファンクション、変数、定数、カーソルおよび例外があります。

このセクションの内容は次のとおりです。

パッケージのコンポーネント

PL/SQLパッケージには、仕様部と本体の2つの部分がありますが、本体は不要な場合もあります。

仕様部はアプリケーションへのインタフェースです。使用可能なタイプ、変数、定数、例外、カーソルおよびサブプログラムを宣言します。本体はカーソルとサブプログラムを完全に定義し、仕様部を完全に実装します。

パッケージは、サブプログラムとは異なり、コール、パラメータ化またはネスト化することはできません。ただし、パッケージおよびサブプログラムのフォーマットは類似しています。

CREATE PACKAGE name AS  -- specification (visible part)
   -- public type and item declarations
   -- subprogram specifications
END [name];

CREATE PACKAGE BODY name AS  -- body (hidden part)
   -- private type and item declarations
   -- subprogram bodies
[BEGIN
   -- initialization statements]
END [name];

仕様部には、アプリケーションで参照できるパブリック宣言が含まれています。本体には、実装の詳細およびプライベート宣言が含まれていますが、アプリケーションからは参照できません。仕様部を変更せずに、パッケージ本体をデバッグ、拡張または置換できます。パッケージ本体の実装の詳細はアプリケーションから隠されているため、コール元プログラムを再コンパイルせずに、パッケージ本体を変更できます。

TimesTenが提供するパッケージのリストの表示

現在TimesTenにインストールされているパッケージ一覧を表示するには、SYSが所有するオブジェクトについて、システム・ビューのALL_PROCEDURESを使用します。

次の例では、ttIsqlを使用してこれを示します。他のALL_*システム・ビューの場合と同様、すべてのユーザーには、ALL_PROCEDURESシステム・ビューに対するSELECT権限があります。

Command> select distinct object_name from all_procedures where owner='SYS';
< DBMS_LOB >
< DBMS_LOCK >
< DBMS_OUTPUT >
< DBMS_PREPROCESSOR >
< DBMS_RANDOM >
< DBMS_SQL >
...
< DBMS_UTILITY >
...
< TT_STATS >
< UTL_FILE >
< UTL_RAW >
< UTL_RECOMP >
< UTL_IDENT >
< TT_DB_VERSION >
19 rows found.

TimesTenが提供するパッケージの使用

TimesTenが提供するパッケージは、データベースが作成されるときに自動的にインストールされます。

すべてのユーザーには、UTL_RECOMPおよびUTL_FILE(それぞれの章を参照)を除く、このマニュアルで説明するパッケージに対するEXECUTE権限があります。

PL/SQLファンクションで定義されたビューを検索するには、そのビューのSELECT権限が必要です。ビューを検索するには個々のEXECUTE権限は必要ありません。パッケージに関する特別要件については、それぞれの章の記述を参照してください。

ノート:

TimesTenでは、インスタンス管理者として実行することは、Oracle DatabaseユーザーSYSDBAとして実行することに相当します。ADMINユーザーとして実行することは、Oracle DatabaseユーザーDBAとして実行することに相当します。

パッケージ内容の参照

パッケージ仕様部で宣言されたタイプ、アイテムおよびサブプログラムを参照するには、ドット表記法を使用します。

たとえば:

package_name.type_name
package_name.item_name
package_name.subprogram_name

パッケージの例の実行

このマニュアルのパッケージの例の出力を確認するには、ttIsqlで最初に次のコマンドを実行します。

Command> set serveroutput on

TimesTenが提供するPL/SQLパッケージの概要

一般利用のためにTimesTenで提供されるPL/SQLパッケージのリスト。これらのパッケージは、パッケージ所有者ではなく起動ユーザーとして実行されます。

ノート:

  • これらのパッケージが提供するプロシージャとファンクションおよびその外部インタフェースはOracle Databaseに付属するもので、変更される可能性があります。

  • 提供されたパッケージを変更しないでください。提供されたパッケージを変更すると、内部エラーおよびデータベースのセキュリティ違反が発生する可能性があります。

表1-1 TimesTenが提供するPL/SQLパッケージの概要

パッケージ名 説明

DBMS_LOB

バイナリ・ラージ・オブジェクトおよびキャラクタ・ラージ・オブジェクト(BLOB、CLOBおよびNCLOB)で動作するサブプログラムを提供します。

DBMS_LOCK

ロック管理サービスへのインタフェースを提供します。TimesTenでは、指定した期間セッションを一時停止するSLEEPプロシージャのみがサポートされます。

DBMS_OUTPUT

ストアド・プロシージャおよびパッケージからメッセージを送信できます。

DBMS_PREPROCESSOR

後処理された形式でPL/SQLユニットのソース・テキストの出力または取出しを行うためのインタフェースを提供します。

DBMS_RANDOM

組込み式の乱数ジェネレータを提供します。

DBMS_SQL

動的SQLを使用してデータベースへのアクセスを可能にします。

DBMS_UTILITY

様々なユーティリティ・ルーチンを提供します。

TT_DB_VERSION

TimesTenのメジャーおよびマイナー・バージョン番号を示します。

TT_STATS

データベース・メトリックのスナップショットを収集し、スナップショット間の比較に基づくレポートを生成します。

UTL_FILE

PL/SQLプログラムで、オペレーティング・システムのテキスト・ファイルの読込みおよび書込みを可能にし、標準オペレーティング・システムのストリーム・ファイルI/Oの制限付きバージョンを提供します。

UTL_IDENT

PL/SQLを実行しているのがデータベースなのかクライアントなのか(TimesTenとOracle Database、サーバーとクライアントなど)を示します。(PL/SQLを実行する各データベースまたはクライアントには、このパッケージのコピーがあります。)

UTL_RAW

RAWデータ・タイプを操作するためのSQLファンクションを提供します。

UTL_RECOMP

無効なPL/SQLモジュールを再コンパイルします。

ノート:

  • PLS_INTEGERデータ・タイプとBINARY_INTEGERデータ・タイプは同じです。このドキュメントでは、リファレンス情報でデータ・タイプ(表タイプ、レコード・タイプ、サブプログラム・パラメータ、サブプログラム戻り値など)を示す場合にBINARY_INTEGERを使用しますが、説明および例ではいずれも使用される場合があります。

  • INTEGERデータ・タイプとNUMBER(38)データ・タイプも同じです。このドキュメントでは、全体をとおしてINTEGERを使用します。