Oracle TimesTen In-Memory Databaseには、下のリストに示す多くのPL/SQLパッケージが用意されています。これらのパッケージを使用して、データベース機能を拡張したり、PL/SQLからSQL機能へのアクセスを可能にすることができます。 TimesTenによって、次のパッケージが自動的にインストールされます。
この章では、各パッケージを構成するサブプログラムのリストを示し、各サブプログラムについて簡単に説明します。 これらのPL/SQLパッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。ただし、TimesTen固有のTT_DB_VERSIONについては、ここで詳しく説明します。
DBMS_LOCKパッケージでは、ロック管理サービスへのインタフェースを提供します。 TimesTenの現在のリリースでは、スリープ機能のみがサポートされています。
表9-1に、サポートされているDBMS_LOCKのサブプログラムを示します。
表9-1 DBMS_LOCKのサブプログラム
| サブプログラム | 説明 | 
|---|---|
| SLEEPプロシージャ | このプロシージャは、指定された時間セッションを一時停止します。 時間を秒単位で指定します。 サポートされている最小の増分は、100分の1秒です。次に例を示します。 DBMS_LOCK.SLEEP(1.95); 注意: 
 | 
DBMS_OUTPUTパッケージを使用すると、ストアド・プロシージャおよびパッケージからメッセージを送信できます。 このパッケージは、PL/SQLのデバッグ情報を表示する場合に役立ちます。
表9-2に、DBMS_OUTPUTのサブプログラムを示します。
DBMS_PREPROCESSORパッケージでは、条件付きコンパイル・ディレクティブの処理後にPL/SQLユニットのソース・テキストを出力または取得するためのインタフェースを提供します。
表9-3に、DBMS_PREPROCESSORのサブプログラムを示します。
DBMS_RANDOMパッケージは、組込み式の乱数ジェネレータを提供します。
表9-4に、DBMS_RANDOMのサブプログラムを示します。
表9-4 DBMS_RANDOMのサブプログラム
| サブプログラム | 説明 | 
|---|---|
| INITIALIZEプロシージャ | パッケージをシード値で初期化します。 | 
| NORMALファンクション | 正規分布の乱数を戻します。 | 
| RANDOMプロシージャ | 乱数を生成します。 | 
| SEEDプロシージャ | シードをリセットします。 | 
| STRINGファンクション | ランダム文字列を取得します。 | 
| TERMINATEプロシージャ | パッケージを終了します。 | 
| VALUEファンクション | VALUEファンクションでは、0以上1未満で小数点以下が38桁(38桁の精度)の乱数を取得します。 オーバーロード・ファンクションでは、乱数 | 
DBMS_SQLパッケージでは、動的SQLを使用してPL/SQLでデータ操作言語(DML)またはデータ定義言語(DDL)文を解析するためのインタフェースを提供します。
DBMS_SQLパッケージでは、事前に定義されたデータ型はサポートされていません。また、LOB、UROWID、タイムゾーン機能、ADT、データベースレベルのコレクション、エディションのオーバーロードなどのTimesTenでサポートされていないデータ型によるオーバーロードもサポートされていません。 TimesTen PL/SQLでサポートされているデータ型の詳細は、「データ型環境の理解」を参照してください。
表9-5に、DBMS_SQLのサブプログラムを示します。
表9-5 DBMS_SQLのサブプログラム
| サブプログラム | 説明 | 
|---|---|
| BIND_ARRAYプロシージャ | 指定された値を指定されたコレクションにバインドします。 | 
| BIND_VARIABLEプロシージャ | 指定された値を指定された変数にバインドします。 | 
| CLOSE_CURSORプロシージャ | 指定されたカーソルをクローズしてメモリーを解放します。 | 
| COLUMN_VALUEプロシージャ | カーソル内の指定された位置のカーソル要素の値を戻します。 | 
| COLUMN_VALUE_LONGプロシージャ | DEFINE_COLUMN_LONGで定義されたLONG列の選択された部分を戻します。 | 
| DEFINE_ARRAYプロシージャ | 指定されたカーソルから選択するコレクションを定義します。SELECT文とともに使用します。 | 
| DEFINE_COLUMNプロシージャ | 指定されたカーソルから選択する列を定義します。SELECT文とともに使用します。 | 
| DEFINE_COLUMN_LONGプロシージャ | 指定されたカーソルから選択するLONG列を定義します。SELECT文とともに使用します。 | 
| DESCRIBE_COLUMNSプロシージャ | DBMS_SQLパッケージでオープンして解析したカーソルの列を示します。 | 
| DESCRIBE_COLUMNS2プロシージャ | 指定された列を示します。DESCRIBE_COLUMNSプロシージャのかわりとして使用します。 | 
| DESCRIBE_COLUMNS3プロシージャ | 指定された列を示します。DESCRIBE_COLUMNSプロシージャのかわりとして使用します。 | 
| EXECUTEファンクション | 指定されたカーソルを実行します。 | 
| EXECUTE_AND_FETCHファンクション | 指定されたカーソルを実行して行をフェッチします。 | 
| FETCH_ROWSファンクション | 指定されたカーソルから行をフェッチします。 | 
| IS_OPENファンクション | 指定されたカーソルがオープンしている場合は、TRUEを戻します。 | 
| LAST_ERROR_POSITIONファンクション | エラーが発生したSQL文テキスト内のバイト・オフセットを戻します。 | 
| LAST_ROW_COUNTファンクション | フェッチされた行の累積数を戻します。 | 
| LAST_ROW_IDファンクション | TimesTenでは、DML文によって最後に処理された行のROWIDはサポートされていません。 このファンクションは、NULLを戻します | 
| LAST_SQL_FUNCTION_CODEファンクション | 文のSQL機能コードを戻します。 | 
| OPEN_CURSORファンクション | 新しいカーソルのカーソルID番号を戻します。 | 
| PARSEプロシージャ | 指定された文を解析します。 | 
| TO_CURSOR_NUMBERファンクション | OPENによってオープンされた強い型指定のREF CURSOR、または弱い型指定のREF CURSORを取得し、DBMS_SQLカーソル番号に変換します。 | 
| TO_REFCURSORファンクション | OPEN、PARSEおよびEXECUTEサブプログラムによってオープン、解析および実行されたカーソルを取得し、PL/SQLで管理可能なREF CURSOR(弱い型指定のカーソル)に変換または移行します。このREF CURSORは、PL/SQLのネイティブ動的SQLで使用したり、ネイティブ動的SQLを使用するよう切り替えることができます。 | 
| VARIABLE_VALUEプロシージャ | 指定されたカーソルの名前付き変数の値を戻します。 | 
DBMS_UTILITYパッケージには、様々なユーティリティ・サブプログラムが含まれています。
TimesTenでサポートされていない機能に関連するサブプログラムは、サポートされていません(ここにも記載されていません)。
表9-6に、DBMS_UTILITYのサブプログラムを示します。
表9-6 DBMS_UTILITYのサブプログラム
| サブプログラム | 説明 | 
|---|---|
| CANONICALIZEプロシージャ | 指定された文字列を正規化します。 | 
| COMMA_TO_TABLEプロシージャ | 名前のカンマ区切りリストを名前の連想配列(索引付き表)に変換します。 | 
| 指定されたデータベース内のすべてのプロシージャ、ファンクション、パッケージおよびビューをコンパイルします。 | |
| DB_VERSIONプロシージャ | TimesTenデータベースのバージョン番号を戻します。 TimesTenではシステム・パラメータ | 
| FORMAT_CALL_STACKファンクション | 現在のコール・スタックをフォーマットします。 | 
| FORMAT_ERROR_BACKTRACEファンクション | 現在のエラーのポイントからエラーが捕捉された例外ハンドラまでのバックトレースをフォーマットします。 | 
| FORMAT_ERROR_STACKファンクション | 現在のエラー・スタックをフォーマットします。 | 
| GET_CPU_TIMEファンクション | 現在のCPUタイムを100分の1秒単位で戻します。 | 
| GET_DEPENDENCYプロシージャ | 渡されたオブジェクトへの依存を表示します。 | 
| GET_ENDIANNESSファンクション | データベース・プラットフォームのエンディアンネスを戻します。 | 
| GET_HASH_VALUEファンクション | 指定された文字列のハッシュ値を計算します。 | 
| GET_SQL_HASHファンクション | MD5アルゴリズムを使用して、指定された文字列のハッシュ値を計算します。 | 
| GET_TIMEファンクション | 現在の時間を100分の1秒単位で戻します。 | 
| データベース・オブジェクトを無効にし、オプションでオブジェクトのPL/SQLコンパイラのパラメータ設定を変更します。 | |
| IS_BIT_SETファンクション | ビット設定を戻します。 | 
| NAME_RESOLVEプロシージャ | フォームの指定された名前を解決します。 [[a.]b.]c[@d] 
 
 | 
| NAME_TOKENIZEプロシージャ | パーサーをコールして、指定された名前を解析します。 "a [.b [.c ]][@dblink]" 二重引用符を削除するか、または引用符がない場合は、大文字に変換します。 コメントを無視し、セマンティック分析は実行しません。 不足している値はNULLになります。 
 | 
| TABLE_TO_COMMAプロシージャ | 名前の連想配列(索引付き表)を名前のカンマ区切りリストに変換します。 | 
| VALIDATEプロシージャ | 所有者、名前およびネームスペースまたはオブジェクトIDで示されたオブジェクトを有効にします。 | 
TT_DB_VERSIONパッケージはTimesTen固有のパッケージで、Oracle TimesTen In-Memory Databaseのバージョン番号とリリース番号を示します。
表9-7に、TT_DB_VERSIONの定数を示します。
TT_DB_VERSIONおよびUTL_IDENTパッケージは、主に条件付きコンパイルに使用されます。 例については、「UTL_IDENT」を参照してください。
表9-7 TT_DB_VERSIONの定数
| 名前 | 説明 | 
|---|---|
| VERSION | Oracle TimesTen In-Memory Databaseのメジャー・リリース番号と同じです。 VERSIONはPLS_INTEGER型です。 たとえば、Oracle TimesTen In-Memory Databaseリリース11.2.1.0の場合、TT_DB_VERSION.VERSIONは1121になります。 | 
| RELEASE | Oracle TimesTen In-Memory Database製品のマイナー・リリース番号と同じです。 RELEASEはPLS_INTEGER型です。 たとえば、Oracle TimesTen In-Memory Databaseリリース11.2.1.0の場合、TT_DB_VERSION.RELEASEは0になります。 | 
UTL_FILEパッケージを使用すると、PL/SQLプログラムでオペレーティング・システムのテキスト・ファイルの読取りと書込みが可能になります。
現在のリリースでは、このパッケージは事前に定義された一時ディレクトリのアクセスにのみ制限されます。 詳細は、『Oracle TimesTen In-Memory Databaseリリース・ノート』を参照してください。
表9-8に、UTL_FILEのサブプログラムを示します。
表9-8 UTL_FILEのサブプログラム
| サブプログラム | 説明 | 
|---|---|
| FCLOSEプロシージャ | ファイルをクローズします。 | 
| FCLOSE_ALLプロシージャ | すべてのファイル・ハンドルをクローズします。 | 
| FCOPYプロシージャ | ファイルの連続する部分を新しく作成されたファイルにコピーします。 | 
| FFLUSHプロシージャ | 保留中のすべての出力を物理的にファイルに書き込みます。 | 
| FGETATTRプロシージャ | ディスク・ファイルの属性を読み取って戻します。 | 
| FGETPOSプロシージャ | ファイル内の現在の相対オフセット位置をバイト単位で戻します。 | 
| FOPENファンクション | 入力または出力に使用するファイルをオープンします。 | 
| FOPEN_NCHARファンクション | 入力または出力に使用するファイルをUnicodeでオープンします。 | 
| FREMOVEプロシージャ | ユーザーに十分な権限がある場合、ディスク・ファイルを削除します。 | 
| FRENAMEプロシージャ | 既存のファイルの名前を新しい名前に変更します(UNIXの | 
| FSEEKプロシージャ | ファイル・ポインタを指定されたバイト数だけファイル内で前後に調整します。 | 
| GET_LINEプロシージャ | オープン・ファイルからテキストを読み取ります。 | 
| GET_LINE_NCHARプロシージャ | オープン・ファイルからテキストをUnicodeで読み取ります。 | 
| GET_RAWファンクション | ファイルからRAW文字列値を読み取り、ファイル・ポインタを読み取ったバイト数だけ前に調整します。 | 
| IS_OPENファンクション | ファイル・ハンドルがオープン・ファイルを参照しているかどうかを判断します。 | 
| NEW_LINEプロシージャ | オペレーティング・システム固有の1つ以上の行終端文字をファイルに書き込みます。 | 
| PUTプロシージャ | 文字列をファイルに書き込みます。 | 
| PUT_LINEプロシージャ | ファイルに行を書き込み、オペレーティング・システム固有の行終端文字を追加します。 | 
| PUT_LINE_NCHARプロシージャ | Unicode行をファイルに書き込みます。 | 
| PUT_NCHARプロシージャ | Unicode文字列をファイルに書き込みます。 | 
| PUT_RAWファンクション | RAWデータ値を入力として受け入れ、値を出力バッファに書き込みます。 | 
| PUTFプロシージャ | これはPUTプロシージャと同様ですが、書式付きです。 | 
| PUTF_NCHARプロシージャ | これはPUT_NCHARプロシージャと同様ですが、書式付きです。 Unicode文字列を書式付きでファイルに書き込みます。 | 
UTL_IDENTパッケージは、PL/SQLがTimesTen、Oracleクライアント、OracleサーバーまたはOracle Formsで実行されているかどうかを示します。 これらには、それぞれ適切な定数設定を持つ独自のUTL_IDENTバージョンがあります。
表9-9に、TimesTenのUTL_IDENT設定を示します。
UTL_IDENTパッケージは、次のように、主に条件付きコンパイルに使用されます。
$if utl_ident.is_oracle_server $then
    [...Run code supported for Oracle Database...]
$elsif utl_ident.is_timesten $then
    [...code supported for TimesTen Database...]
$end
次の例9-1を参照してください。
表9-9 UTL_IDENTの定数
| 名前 | 説明 | 
|---|---|
| IS_ORACLE_CLIENT | BOOLEANはFALSEに設定されています。 | 
| IS_ORACLE_SERVER | BOOLEANはFALSEに設定されています。 | 
| IS_ORACLE_FORMS | BOOLEANはFALSEに設定されています。 | 
| IS_TIMESTEN | BOOLEANはTRUEに設定されています。 | 
例9-1 UTL_IDENTおよびTT_DB_VERSIONの使用
この例では、UTL_IDENTおよびTT_DB_VERSIONパッケージを使用して、使用されているデータベースに関する情報を表示します。 現在のリリースでは、Oracle Database 11.1またはTimesTen 11.2.1が表示されます。 条件付きコンパイルのトリガー文字$によって、アプリケーションのコンパイル前に処理されるコードが識別されます。
Command> run what_db.sql
create or replace function what_db
return varchar2
as
 dbname varchar2(100);
 version varchar2(100);
begin
$if utl_ident.is_timesten
$then
 dbname := 'TimesTen';
 version := substr(tt_db_version.version, 1, 2) ||
            '.' ||
            substr(tt_db_version.version, 3, 1) ||
            '.' ||
            substr(tt_db_version.version, 4, 1);
$elsif utl_ident.is_oracle_server
$then
 dbname := 'Oracle Database';
 version := dbms_db_version.version || '.' || dbms_db_version.release;
$else
 dbname := 'Non-database environment';
 version := '';
$end
 return dbname || ' ' || version;
end;
/
Function created.
set serveroutput on;
begin
dbms_output.put_line(what_db());
end;
/
TimesTen 11.2.1
PL/SQL procedure successfully completed.
UTL_RAWパッケージには、RAWデータ型を操作するためのSQLファンクションが用意されています。
表9-10に、UTL_RAWのサブプログラムを示します。
表9-10 UTL_RAWのサブプログラム
| サブプログラム | 説明 | 
|---|---|
| BIT_ANDファンクション | RAW  | 
| BIT_COMPLEMENTファンクション | RAW  | 
| BIT_ORファンクション | RAW  | 
| BIT_XORファンクション | RAW  | 
| CAST_FROM_BINARY_DOUBLEファンクション | BINARY_DOUBLEのバイナリ表現(RAW)を戻します。 | 
| CAST_FROM_BINARY_FLOATファンクション | BINARY_FLOATのバイナリ表現(RAW)を戻します。 | 
| CAST_FROM_BINARY_INTEGERファンクション | BINARY_INTEGERのバイナリ表現(RAW)を戻します。 | 
| CAST_FROM_NUMBERファンクション | NUMBERのバイナリ表現(RAW)を戻します。 | 
| CAST_TO_BINARY_DOUBLEファンクション | RAWのバイナリ表現をBINARY_DOUBLEにキャストします。 | 
| CAST_TO_BINARY_FLOATファンクション | RAWのバイナリ表現をBINARY_FLOATにキャストします。 | 
| CAST_TO_BINARY_INTEGERファンクション | BINARY_INTEGERのバイナリ表現(RAW)をBINARY_INTEGERにキャストします。 | 
| CAST_TO_NUMBERファンクション | NUMBERのバイナリ表現(RAW)をNUMBERにキャストします。 | 
| CAST_TO_NVARCHAR2ファンクション | 
 | 
| CAST_TO_RAWファンクション | 
 | 
| CAST_TO_VARCHAR2ファンクション | 
 | 
| COMPAREファンクション | RAW  | 
| CONCATファンクション | 最大12個のRAW値を単一のRAW値に連結します。 | 
| CONVERTファンクション | RAW  | 
| COPIESファンクション | 
 | 
| LENGTHファンクション | RAW値 | 
| OVERLAYファンクション | ターゲットRAWの指定された部分(ターゲットのバイト位置 | 
| REVERSEファンクション | RAW値 | 
| SUBSTRファンクション | RAW  | 
| TRANSLATEファンクション | 入力RAW  | 
| TRANSLITERATEファンクション | 入力RAW  | 
| XRANGEファンクション | 値 | 
UTL_RECOMPパッケージを使用すると、無効なPL/SQLモジュールを再コンパイルできます。 このパッケージは、特に、通常ではすべてのPL/SQLオブジェクトが無効になるメジャー・バージョン・アップグレードの後に役立ちます。
表9-11に、UTL_RECOMPのサブプログラムを示します。
| 重要:このパッケージは、インスタンス管理者がSYS.UTL_RECOMPとして実行する必要があります。 | 
表9-11 UTL_RECOMPのサブプログラム
| 名前 | 説明 | 
|---|---|
| RECOMP_PARALLELプロシージャ | 指定されたスキーマ内の無効なオブジェクトまたはデータベース内のすべての無効なオブジェクトをパラレルに再コンパイルします。 注意: TimesTenではDBMS_SCHEDULERがサポートされていないため、パラレルに実行される再コンパイル・スレッドの数は、ユーザーの指定にかかわらず常に1です。 したがって、TimesTenでは、RECOMP_PARALLELとRECOMP_SERIALに特に違いはありません。 | 
| RECOMP_SERIALプロシージャ | 指定されたスキーマ内の無効なオブジェクト、またはデータベース内のすべての無効なオブジェクトをシリアルに再コンパイルします。 |