ヘッダーをスキップ
Oracle TimesTen In-Memory Database PL/SQL開発者ガイド
リリース11.2.1
B56057-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

9 TimesTenが提供するPL/SQLパッケージ

Oracle TimesTen In-Memory Databaseには、下のリストに示す多くのPL/SQLパッケージが用意されています。これらのパッケージを使用して、データベース機能を拡張したり、PL/SQLからSQL機能へのアクセスを可能にすることができます。 TimesTenによって、次のパッケージが自動的にインストールされます。

この章では、各パッケージを構成するサブプログラムのリストを示し、各サブプログラムについて簡単に説明します。 これらのPL/SQLパッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。ただし、TimesTen固有のTT_DB_VERSIONについては、ここで詳しく説明します。


注意:

  • STANDARD、DBMS_STANDARDおよびPLITBLMパッケージについては、ここでは説明しません。 これらのパッケージに属しているサブプログラムは、PL/SQL言語の一部です。

  • すべてのユーザーには、この章で説明されているパッケージに対するEXECUTE権限があります。ただし、UTL_RECOMPを除きます(UTL_RECOMPについてはUTL_RECOMPの項で説明します)。



DBMS_LOCK

DBMS_LOCKパッケージでは、ロック管理サービスへのインタフェースを提供します。 TimesTenの現在のリリースでは、スリープ機能のみがサポートされています。

表9-1に、サポートされているDBMS_LOCKのサブプログラムを示します。

表9-1 DBMS_LOCKのサブプログラム

サブプログラム 説明

SLEEPプロシージャ

このプロシージャは、指定された時間セッションを一時停止します。 時間を秒単位で指定します。 サポートされている最小の増分は、100分の1秒です。次に例を示します。

DBMS_LOCK.SLEEP(1.95);

注意:

  • システムのアクティビティによっては、実際のスリープ時間が指定した時間より多少長くなる場合があります。

  • PLSQL_TIMEOUTがこのスリープ時間より短い正の値に設定されている場合は、タイムアウトが先に発生します。 スリープ時間をタイムアウト値より短くするか、またはPLSQL_TIMEOUT=0(タイムアウトなし)にする必要があります。 PLSQL_TIMEOUTの詳細は、「PL/SQL接続属性」を参照してください。



DBMS_OUTPUT

DBMS_OUTPUTパッケージを使用すると、ストアド・プロシージャおよびパッケージからメッセージを送信できます。 このパッケージは、PL/SQLのデバッグ情報を表示する場合に役立ちます。

表9-2に、DBMS_OUTPUTのサブプログラムを示します。

表9-2 DBMS_OUTPUTのサブプログラム

サブプログラム 説明

DISABLEプロシージャ

メッセージ出力を無効にします。

ENABLEプロシージャ

メッセージ出力を有効にします。

GET_LINEプロシージャ

バッファから1行を取得します。

GET_LINESプロシージャ

バッファから行の配列を取得します。

NEW_LINEプロシージャ

PUTで作成された行を終了します。

PUTプロシージャ

行をバッファに格納します。

PUT_LINEプロシージャ

行の一部をバッファに格納します。



DBMS_PREPROCESSOR

DBMS_PREPROCESSORパッケージでは、条件付きコンパイル・ディレクティブの処理後にPL/SQLユニットのソース・テキストを出力または取得するためのインタフェースを提供します。

表9-3に、DBMS_PREPROCESSORのサブプログラムを示します。

表9-3 DBMS_PREPROCESSORのサブプログラム

サブプログラム 説明

GET_POST_PROCESSED_SOURCEファンクション

後処理されたソース・テキストを戻します。

PRINT_POST_PROCESSED_SOURCEプロシージャ

後処理されたソース・テキストを出力します。



DBMS_RANDOM

DBMS_RANDOMパッケージは、組込み式の乱数ジェネレータを提供します。

表9-4に、DBMS_RANDOMのサブプログラムを示します。

表9-4 DBMS_RANDOMのサブプログラム

サブプログラム 説明

INITIALIZEプロシージャ

パッケージをシード値で初期化します。

NORMALファンクション

正規分布の乱数を戻します。

RANDOMプロシージャ

乱数を生成します。

SEEDプロシージャ

シードをリセットします。

STRINGファンクション

ランダム文字列を取得します。

TERMINATEプロシージャ

パッケージを終了します。

VALUEファンクション

VALUEファンクションでは、0以上1未満で小数点以下が38桁(38桁の精度)の乱数を取得します。 オーバーロード・ファンクションでは、乱数xを取得します。xはLOW以上HIGH未満です。



DBMS_SQL

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

DBMS_UTILITYパッケージには、様々なユーティリティ・サブプログラムが含まれています。

TimesTenでサポートされていない機能に関連するサブプログラムは、サポートされていません(ここにも記載されていません)。

表9-6に、DBMS_UTILITYのサブプログラムを示します。

表9-6 DBMS_UTILITYのサブプログラム

サブプログラム 説明

CANONICALIZEプロシージャ

指定された文字列を正規化します。

COMMA_TO_TABLEプロシージャ

名前のカンマ区切りリストを名前の連想配列(索引付き表)に変換します。

COMPILE_SCHEMA

指定されたデータベース内のすべてのプロシージャ、ファンクション、パッケージおよびビューをコンパイルします。

DB_VERSIONプロシージャ

TimesTenデータベースのバージョン番号を戻します。

TimesTenではシステム・パラメータCOMPATIBLEはサポートされていないため、互換性設定についてはNULLが戻されます。

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秒単位で戻します。

INVALIDATEプロシージャ

データベース・オブジェクトを無効にし、オプションでオブジェクトのPL/SQLコンパイラのパラメータ設定を変更します。

IS_BIT_SETファンクション

ビット設定を戻します。

NAME_RESOLVEプロシージャ

フォームの指定された名前を解決します。

[[a.]b.]c[@d]

abおよびcはSQL識別子、dはdblink(データベース・リンク)です。

@dは使用しないでください。TimesTenでは、データベース・リンクはサポートされていません。

NAME_TOKENIZEプロシージャ

パーサーをコールして、指定された名前を解析します。

"a [.b [.c ]][@dblink]"

二重引用符を削除するか、または引用符がない場合は、大文字に変換します。 コメントを無視し、セマンティック分析は実行しません。 不足している値はNULLになります。

@dblinkは使用しないでください。TimesTenでは、データベース・リンクはサポートされていません。

TABLE_TO_COMMAプロシージャ

名前の連想配列(索引付き表)を名前のカンマ区切りリストに変換します。

VALIDATEプロシージャ

所有者、名前およびネームスペースまたはオブジェクトIDで示されたオブジェクトを有効にします。



TT_DB_VERSION

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

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のmvコマンドと同様)

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

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

UTL_RAWパッケージには、RAWデータ型を操作するためのSQLファンクションが用意されています。

表9-10に、UTL_RAWのサブプログラムを示します。

表9-10 UTL_RAWのサブプログラム

サブプログラム 説明

BIT_ANDファンクション

RAW r1とRAW r2の値のビット単位の論理ANDを実行し、結果をRAWとして戻します。

BIT_COMPLEMENTファンクション

RAW rの値のビット単位の論理complementを実行し、結果をRAWとして戻します。

BIT_ORファンクション

RAW r1とRAW r2の値のビット単位の論理orを実行し、結果をRAWとして戻します。

BIT_XORファンクション

RAW r1とRAW r2の値のビット単位の論理exclusive orを実行し、結果を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ファンクション

nデータ・バイトで表現されたRAW値をnデータ・バイトのNVARCHAR2値に変換します。

CAST_TO_RAWファンクション

nデータ・バイトで表現されたVARCHAR2値をnデータ・バイトのRAW値に変換します。

CAST_TO_VARCHAR2ファンクション

nデータ・バイトで表現されたRAW値をnデータ・バイトのVARCHAR2値に変換します。

COMPAREファンクション

RAW r1をRAW r2と比較します。

CONCATファンクション

最大12個のRAW値を単一のRAW値に連結します。

CONVERTファンクション

RAW rをキャラクタ・セットfrom_charsetからキャラクタ・セットto_charsetに変換し、その結果のRAWを戻します。

COPIESファンクション

rn回コピーして連結したものを戻します。

LENGTHファンクション

RAW値rの長さをバイト単位で戻します。

OVERLAYファンクション

ターゲットRAWの指定された部分(ターゲットのバイト位置posからlenバイト分)をオーバーレイRAWでオーバーレイします。

REVERSEファンクション

RAW値rのバイト順序を逆順にします。

SUBSTRファンクション

RAW rposからlenバイト分を戻します。

TRANSLATEファンクション

入力RAW r内のバイトを変換RAW from_setto_set内のバイトに従って変換します。

TRANSLITERATEファンクション

入力RAW r内のバイトを文字変換RAWの値from_setto_set内のバイトに従って変換します。

XRANGEファンクション

start_byteで始まり値end_byteで終わる、連続したすべての有効な1バイト・エンコードを含むRAW値を戻します。



UTL_RECOMP

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プロシージャ

指定されたスキーマ内の無効なオブジェクト、またはデータベース内のすべての無効なオブジェクトをシリアルに再コンパイルします。