プライマリ・コンテンツに移動
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
12c リリース1 (12.1)
B71281-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

174 DBMS_UTILITY

DBMS_UTILITYパッケージは、各種のユーティリティ・サブプログラムを提供します。

この章では、次の項目について説明します。

DBMS_UTILITYの使用方法

セキュリティ・モデル

DBMS_UTILITYは、NAME_RESOLVEプロシージャおよびCOMPILE_SCHEMAプロシージャのコール・ユーザーの権限で実行されます。これは、SQLが正しく動作するために必要です。

このパッケージは、SYSとして実行されません。権限は、DBMS_DDLを使用してチェックされます。

定数

DBMS_UTILITYパッケージでは、表174-1「DBMS_UTILITYの定数」に示す定数が使用されます。

表174-1 DBMS_UTILITYの定数

名前 タイプ 説明

INV_ERROR_ON_RESTRICTIONS

PLS_INTEGER

1

この定数は、INVALIDATEサブプログラムのp_option_flagsパラメータに対して唯一有効な値です。


例外

次の表に、DBMS_UTILITYで発生する例外を示します。

表174-2 DBMS_UTILITYで発生する例外

例外 エラー・コード 説明

INV_NOT_EXIST_OR_NO_PRIV

-24237

object_id引数がNULLまたは無効な値の場合、あるいは無効化されているオブジェクトのCREATE権限をコール元が持っていない場合に、INVALIDATEサブプログラムによって発行されます。

INV_MALFORMED_SETTINGS

-24238

コンパイラの設定がp_plsql_object_settingsパラメータで複数回指定された場合に、INVALIDATEサブプログラムによって発行されます。

INV_RESTRICTED_OBJECT

-24239

p_object_idパラメータに関連する条件の様々な組合せが互いに矛盾する場合に、INVALIDATEサブプログラムによって発行されます。


データ構造

DBMS_UTILITYパッケージでは、単一のレコード・タイプと複数のタイプを定義します。

レコード・タイプ

INSTANCE_RECORDレコード・タイプ

このタイプは、アクティブなインスタンス番号とインスタンス名のペアのリストを示します。

構文

  TYPE INSTANCE_RECORD IS RECORD (
       inst_number   NUMBER,
       inst_name     VARCHAR2(60));

フィールド

表174-3 INSTANCE_RECORDレコード・タイプのフィールド

フィールド 説明

inst_number

アクティブなインスタンス番号

inst_name

インスタンス名


DBLINK_ARRAY表タイプ

このタイプは、データベース・リンクのリストを格納します。

構文

TYPE DBLINK_ARRAY IS TABLE OF VARCHAR2(128) INDEX BY BINARY_INTEGER;

INDEX_TABLE_TYPE表タイプ

このタイプは、生成されたオブジェクトがユーザーに戻される順序を示します。

構文

TYPE INDEX_TABLE_TYPE IS TABLE OF BINARY_INTEGER INDEX BY BINARY_INTEGER;

INSTANCE_TABLE表タイプ

このタイプは、INSTANCE_RECORDレコード・タイプの表を示します。

構文

TYPE INSTANCE_TABLE IS TABLE OF INSTANCE_RECORD INDEX BY BINARY_INTEGER;

使用上の注意

INSTANCE_TABLEの索引の開始は1で、INSTANCE_TABLEは稠密です。

LNAME_ARRAY表タイプ

このタイプは、完全修飾属性名を含むLONG NAMEのリストを格納します。

構文

TYPE LNAME_ARRAY IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;

NAME_ARRAY表タイプ

このタイプは、NAMEのリストを格納します。

構文

TYPE NAME_ARRAY IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;

NUMBER_ARRAY表タイプ

このタイプは、生成されたオブジェクトがユーザーに戻される順序を示します。

構文

TYPE NUMBER_ARRAY IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;

UNCL_ARRAY表タイプ

このタイプは、"user"."name"."column"@linkのリストを格納します。

構文

TYPE UNCL_ARRAY IS TABLE OF VARCHAR2(227) INDEX BY BINARY_INTEGER;

DBMS_UTILITYサブプログラムの要約

表174-4 DBMS_UTILITYパッケージのサブプログラム

サブプログラム 説明

ACTIVE_INSTANCESプロシージャ


アクティブなインスタンスを戻します。

ANALYZE_DATABASEプロシージャ


データベース内のすべての表、クラスタおよび索引を分析します。

ANALYZE_PART_OBJECTプロシージャ


指定した表および索引を分析します。

ANALYZE_SCHEMAプロシージャ


スキーマ内のすべての表、クラスタおよび索引を分析します。

CANONICALIZEプロシージャ


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

COMMA_TO_TABLEプロシージャ


カンマで区切られた名前のリストを、名前のPL/SQL表に変換します。

COMPILE_SCHEMAプロシージャ


指定したスキーマ内にあるすべてのプロシージャ、ファンクション、パッケージ、ビューおよびトリガーをコンパイルします。

CREATE_ALTER_TYPE_ERROR_TABLEプロシージャ


ALTER TYPE文のEXCEPTION句で使用するためのエラー表を作成します。

CURRENT_INSTANCEファンクション


現在接続しているインスタンス番号を戻します。

DATA_BLOCK_ADDRESS_BLOCKファンクション


データ・ブロック・アドレスのブロック番号部分を取得します。

DATA_BLOCK_ADDRESS_FILEファンクション


データ・ブロック・アドレスのファイル番号部分を取得します。

DB_VERSIONプロシージャ


データベースに関するバージョン情報を戻します。

EXEC_DDL_STATEMENTプロシージャ


parse_stringでDDL文を実行します。

EXPAND_SQL_TEXTプロシージャ


入力SQL問合せのすべてのビュー参照を対応するビュー副問合せと再帰的に置き換えます。

FORMAT_CALL_STACKファンクション


現行のコール・スタックをフォーマットします。

FORMAT_ERROR_BACKTRACEファンクション


現行のエラーのポイントから、エラーが捕捉された例外ハンドラまでのバックトレースをフォーマットします。

FORMAT_ERROR_STACKファンクション


現行のエラー・スタックをフォーマットします。

GET_CPU_TIMEファンクション


現在のCPU時間を100分の1秒単位で戻します。

GET_DEPENDENCYプロシージャ


渡されたオブジェクトの依存関係を示します。

GET_ENDIANNESSファンクション


データベース・プラットフォームのエンディアンを取得します。

GET_HASH_VALUEファンクション


指定した文字列についてハッシュ値を計算します。

GET_PARAMETER_VALUEファンクション


指定したinit.oraパラメータの値を取得します。

GET_SQL_HASHファンクション


MD5アルゴリズムを使用して、指定した文字列についてハッシュ値を計算します。

GET_TIMEファンクション


現在の時間を100分の1秒単位で戻します。

GET_TZ_TRANSITIONSプロシージャ


timezone.datファイルのregionidに基づいてタイムゾーンの遷移が戻されます。

INVALIDATEプロシージャ


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

IS_BIT_SETファンクション


指定のRAW値の、指定のビットのビット設定をチェックします。

IS_CLUSTER_DATABASEファンクション


データベースがクラスタ・データベース・モードで実行されているかどうかを判別します。

MAKE_DATA_BLOCK_ADDRESSファンクション


ファイル番号とブロック番号を指定して、データ・ブロック・アドレスを作成します。

NAME_RESOLVEプロシージャ


指定した名前を解決します。

NAME_TOKENIZEプロシージャ


指定した名前を解析するためにパーサーをコールします。

OLD_CURRENT_SCHEMAファンクション


SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA')からのセッション値を戻します。

OLD_CURRENT_USERファンクション


SYS_CONTEXT ('USERENV', 'CURRENT_USER')からのセッション値を戻します。

PORT_STRINGファンクション


Oracleのバージョンおよびオペレーティング・システムを一意に識別する文字列を戻します。

SQLID_TO_SQLHASHファンクション


SQL IDをハッシュ値に変換します。

TABLE_TO_COMMAプロシージャ


名前のPL/SQL表を、カンマで区切られた名前のリストに変換します。

VALIDATEプロシージャ


無効なデータベース・オブジェクトを有効にします。

WAIT_ON_PENDING_DMLファンクション


表示された表にロックがあり、指定したSCNより前に開始されたすべてのトランザクション(コール元自体のトランザクションを除く)がコミットされるか、またはロールバックされるまで待機します。


ACTIVE_INSTANCESプロシージャ

このプロシージャは、アクティブなインスタンスを戻します。

構文

DBMS_UTILITY.ACTIVE_INSTANCES (
   instance_table   OUT INSTANCE_TABLE,
   instance_count   OUT NUMBER); 

パラメータ

表174-5 ACTIVE_INSTANCESプロシージャのパラメータ

プロシージャ 説明

instance_table

アクティブなインスタンス番号と名前のリストが含まれます。進行中のインスタンスがない場合、リストは空になります。

instance_count

アクティブなインスタンスの数。


ANALYZE_DATABASEプロシージャ

このプロシージャは、データベース内のすべての表、クラスタおよび索引を分析します。

構文

DBMS_UTILITY.ANALYZE_DATABASE (
   method             IN  VARCHAR2,
   estimate_rows      IN  NUMBER DEFAULT NULL,
   estimate_percent   IN  NUMBER DEFAULT NULL,
   method_opt         IN  VARCHAR2 DEFAULT NULL);

パラメータ

表174-6 ANALYZE_DATABASEプロシージャのパラメータ

パラメータ 説明

method

ESTIMATECOMPUTEまたはDELETEのいずれか。ESTIMATEの場合は、estimate_rowsまたはestimate_percentが0(ゼロ)以外である必要があります。

estimate_rows

推定する行の数。

estimate_percent

推定する行のパーセント。estimate_rowsが指定されている場合、このパラメータは無視されます。

method_opt

次の形式のメソッド・オプション:

[ FOR TABLE ]

[ FOR ALL [INDEXED] COLUMNS] [SIZE n]

[ FOR ALL INDEXES ]


例外

ORA-20000: このデータベース内のいずれかのオブジェクトに対する権限が不十分です。

ANALYZE_PART_OBJECTプロシージャ

このプロシージャは、次のSQLと同じです。

"ANALYZE TABLE|INDEX [<schema>.]<object_name> PARTITION <pname> [<command_type>] [<command_opt>] [<sample_clause>] 

構文

DBMS_UTILITY.ANALYZE_PART_OBJECT (
   schema        IN VARCHAR2 DEFAULT NULL,
   object_name   IN VARCHAR2 DEFAULT NULL,
   object_type   IN CHAR     DEFAULT 'T',
   command_type  IN CHAR     DEFAULT 'E',
   command_opt   IN VARCHAR2 DEFAULT NULL,
   sample_clause IN VARCHAR2 DEFAULT 'sample 5 percent ');

パラメータ

表174-7 ANALYZE_PART_OBJECTプロシージャのパラメータ

パラメータ 説明

schema

object_nameのスキーマ

object_name

分析するオブジェクトの名前。パーティション化されている必要があります。

object_type

オブジェクトのタイプ。T(表)またはI(索引)である必要があります。

command_type

V(構造の検証)を指定する必要があります。

command_opt

command_typeのその他のオプション。

CEについては、FOR表、FORのすべてのLOCAL索引、FORのすべての列、または分析統計(表)の'FOR'オプションをいくつか組み合せることが可能です。Vについては、object_typeがTのときにCASCADEが可能です。

sample_clause

command_typeが'E'の場合に使用するサンプル句。


使用上の注意

オブジェクトの各パーティションについて、ジョブ・キューを使用して並列に実行します。

ANALYZE_SCHEMAプロシージャ

このプロシージャは、スキーマ内のすべての表、クラスタおよび索引を分析します。

構文

DBMS_UTILITY.ANALYZE_SCHEMA (
   schema             IN  VARCHAR2,
   method             IN  VARCHAR2,
   estimate_rows      IN  NUMBER DEFAULT NULL,
   estimate_percent   IN  NUMBER DEFAULT NULL,
   method_opt         IN  VARCHAR2 DEFAULT NULL);

パラメータ

表174-8 ANALYZE_SCHEMAプロシージャのパラメータ

パラメータ 説明

schema

スキーマの名前。

method

ESTIMATECOMPUTEまたはDELETEのいずれか。ESTIMATEの場合は、estimate_rowsまたはestimate_percentが0(ゼロ)以外である必要があります。

estimate_rows

推定する行の数。

estimate_percent

推定する行のパーセント。estimate_rowsが指定されている場合、このパラメータは無視されます。

method_opt

次の形式のメソッド・オプション:

[ FOR TABLE ]

[ FOR ALL [INDEXED] COLUMNS] [SIZE n]

[ FOR ALL INDEXES ]


例外

ORA-20000: このスキーマ内のいずれかのオブジェクトに対する権限が不十分です。

CANONICALIZEプロシージャ

このプロシージャは、指定した文字列を正規化します。このプロシージャは単一の予約語またはキーワード('table'など)を処理し、' table 'がTABLEになるように単一の識別子の空白を取り除きます。

構文

DBMS_UTILITY.CANONICALIZE(
   name           IN    VARCHAR2,
   canon_name     OUT   VARCHAR2,
   canon_len      IN    BINARY_INTEGER);

パラメータ

表174-9 CANONICALIZEプロシージャのパラメータ

パラメータ 説明

name

正規化する文字列。

canon_name

正規化された文字。

canon_len

正規化する文字列の長さ(バイト単位)。


戻り値

canon_nameの先頭のcanon_lenバイトを戻します。

使用上の注意

  • nameがNULLの場合、canon_nameはNULLになります。

  • nameがドットの付いた名前でない場合、およびnameが二重引用符で囲まれている場合、二重引用符を削除します。または、NLS_UPPERで大文字に変換します。この例には、スペースなどの特殊文字が使用されていても、二重引用符で囲まれていない名前は含まれません。

  • 名前がドット付きの名前(a."b".cなど)の場合、ドット付きの名前の各要素の中に二重引用符で囲まれている要素がある場合、このコンポーネントに対する変換は行われません。かわりに、NLS_UPPERによって大文字に変換し、この要素の大文字の形式を二重引用符で囲みます。そのような場合、正規化された各要素は、"."で区切られて、入力位置に連結されます。

  • a[.b]*の後の他の文字は無視されます。

  • このプロシージャでは、'A B'のような例は処理されません。

  • aAに変換されます。

  • "a"aに変換されます。

  • "a".b"a"."B"に変換されます。

  • "a".b,c.f"a"."B"に変換され、",c.f"が無視されます。

COMMA_TO_TABLEプロシージャ

これらのプロシージャは、カンマで区切られた名前のリストを、名前のPL/SQL表に変換します。2番目のバージョンでは、完全修飾属性名をサポートしています。

構文

DBMS_UTILITY.COMMA_TO_TABLE ( 
   list   IN  VARCHAR2,
   tablen OUT BINARY_INTEGER,
   tab    OUT uncl_array); 

DBMS_UTILITY.COMMA_TO_TABLE ( 
   list   IN  VARCHAR2,
   tablen OUT BINARY_INTEGER,
   tab    OUT lname_array);

パラメータ

表174-10 COMMA_TO_TABLEプロシージャのパラメータ

パラメータ 説明

list

カンマで区切られた名前のリスト。最初のオーバーロードの場合、名前はa [. b [. c ]][ @ d ]の書式にする必要があります。

2番目のオーバーロードでは、a [. b]*の書式にする必要があります。

abcdは単純な識別子です(引用符あり、または引用符なし)。

tablen

PL/SQL表にある表の数。

tab

名前のリストを含んだPL/SQL表。


戻り値

PL/SQL表が、値1..nn+1 is nullとともに戻されます。

使用上の注意

  • listは、空ではないカンマで区切られたリストであることが必要で、カンマ区切りのリスト以外の場合は拒否されます。二重引用符内のカンマは無視されます。

  • カンマで区切られたリストに、マルチバイト・キャラクタを含めることはできません。

  • tabにある値は、変換されずに元のリストからコピーされます。

  • 区切り文字間の文字列の長さが30バイトを超えると、このプロシージャは失敗します。

COMPILE_SCHEMAプロシージャ

このプロシージャは、指定したスキーマ内にあるすべてのプロシージャ、ファンクション、パッケージ、ビューおよびトリガーをコンパイルします。

構文

DBMS_UTILITY.COMPILE_SCHEMA (
   schema          IN VARCHAR2,
   compile_all     IN BOOLEAN DEFAULT TRUE,
   reuse_settings  IN BOOLEAN DEFAULT FALSE);

パラメータ

表174-11 COMPILE_SCHEMAプロシージャのパラメータ

パラメータ 説明

schema

スキーマの名前。

compile_all

TRUEに設定すると、VALIDであるかどうかに関係なく、スキーマ内のすべてをコンパイルします。

FALSEに設定すると、INVALIDオブジェクトのみをコンパイルします。

reuse_settings

オブジェクトのセッション設定を再利用するかどうか、または現在のセッション設定を採用するかどうかを指定します。


例外

表174-12 COMPILE_SCHEMAプロシージャの例外

例外 説明

ORA-20000

このスキーマ内のいずれかのオブジェクトに対して権限が不十分です。

ORA-20001

SYSオブジェクトを再コンパイルできません。

ORA-20002

最大反復数を超えています。一部のオブジェクトが再コンパイルされていない可能性があります。


使用上の注意

  • このサブプログラムは、UTL_RECOMPパッケージのRECOMP_SERIALプロシージャのラッパーであることに注意してください。

  • このプロシージャのコール後、ステータスがINVALIDの項目をビューALL_OBJECTSから選択して、すべてのオブジェクトが正常にコンパイルされたかどうかを調べます。

  • Enterprise Managerのコマンドを使用すると、INVALIDのオブジェクトに関連するエラーを表示できます。

    SHOW ERRORS <type> <schema>.<name>
    

CREATE_ALTER_TYPE_ERROR_TABLEプロシージャ

このプロシージャは、ALTER TYPE文のEXCEPTION句で使用するためのエラー表を作成します。

構文

DBMS_UTILITY.CREATE_ALTER_TYPE_ERROR_TABLE(
   schema_name     IN     VARCHAR2,
   table_name      IN     VARCHAR2);

パラメータ

表174-13 CREATE_ALTER_TYPE_ERROR_TABLEプロシージャのパラメータ

パラメータ 説明

schema_name

スキーマの名前。

table_name

作成する表名。


例外

表がすでに存在する場合、エラーが戻されます。

CURRENT_INSTANCEファンクション

このファンクションは、現在接続しているインスタンス番号を戻します。接続しているインスタンスが停止している場合、NULLを戻します。

構文

DBMS_UTILITY.CURRENT_INSTANCE
   RETURN NUMBER;

DATA_BLOCK_ADDRESS_BLOCKファンクション

このファンクションは、データ・ブロック・アドレスのブロック番号部分を取得します。

構文

DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK (
   dba NUMBER) 
  RETURN NUMBER;

パラメータ

表174-14 DATA_BLOCK_ADDRESS_BLOCKファンクションのパラメータ

パラメータ 説明

dba

データ・ブロック・アドレス。


プラグマ

pragma restrict_references(data_block_address_block, WNDS, RNDS, WNPS, RNPS);

戻り値

ブロックのブロック・オフセット。

使用上の注意

このファンクションは、bigfile表領域に属するデータブロックには使用しないでください。

DATA_BLOCK_ADDRESS_FILEファンクション

このファンクションは、データ・ブロック・アドレスのファイル番号部分を取得します。

構文

DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE (
   dba NUMBER) 
  RETURN NUMBER;

パラメータ

表174-15 DATA_BLOCK_ADDRESS_FILEファンクションのパラメータ

パラメータ 説明

dba

データ・ブロック・アドレス。


プラグマ

pragma restrict_references (data_block_address_file, WNDS, RNDS, WNPS, RNPS);

戻り値

ブロックを含むファイル。

使用上の注意

このファンクションは、bigfile表領域に属するデータブロックには使用しないでください。

DB_VERSIONプロシージャ

このプロシージャは、データベースに関するバージョン情報を戻します。

構文

DBMS_UTILITY.DB_VERSION (
   version       OUT VARCHAR2,
   compatibility OUT VARCHAR2); 

パラメータ

表174-16 DB_VERSIONプロシージャのパラメータ

パラメータ 説明

version

データベースの内部ソフトウェア・バージョンを表す文字列(例: 7.1.0.0.0)。

この文字列の長さは可変なので、データベース・バージョンによって決定されます。

compatibility

COMPATIBLEがあるinit.oraパラメータによって決定する、データベースの互換性設定。

このパラメータがinit.oraファイルで指定されていない場合は、NULLが戻されます。


EXEC_DDL_STATEMENTプロシージャ

このプロシージャは、parse_stringでDDL文を実行します。

構文

DBMS_UTILITY.EXEC_DDL_STATEMENT (
   parse_string IN VARCHAR2);

パラメータ

表174-17 EXEC_DDL_STATEMENTプロシージャのパラメータ

パラメータ 説明

parse_string

実行するDDL文。


EXPAND_SQL_TEXTプロシージャ

このプロシージャは、入力SQL問合せのすべてのビュー参照を対応するビュー副問合せと再帰的に置き換えます。

構文

DBMS_UTILITY.EXPAND_SQL_TEXT (
   input_sql_text     IN           CLOB,
   output_sql_text    OUT NOCOPY   CLOB);

パラメータ

表174-18 EXPAND_SQL_TEXTプロシージャのパラメータ

パラメータ 説明

input_sql_text

入力SQL問合せのテキスト

output_sql_text

ビューが展開された問合せのテキスト


例外

表174-19 EXPAND_SQL_TEXTプロシージャの例外

例外 説明

ORA-00942

現在のユーザーには、input_sql_textで再帰的に参照されるすべてのビューおよび表を選択する権限がありません。

ORA-24251

input_sql_textSELECT文ではありません。

ORA-00900

入力が無効です。

ORA-29477

入力LOBサイズが最大サイズの4GB -1を超えています。


使用上の注意

拡張され、マージされたSQL文テキストは、正常完了時にoutput_sql_textにコピーされます。結果として得られる問合せのテキストは、基礎となる表への参照のみを含み、意味的には同等です。ただし、次の点に注意してください。

  • いずれかのビューで実行者権限のファンクションが呼び出されたときに、ビュー所有者が拡張SQLテキストのコンパイル・ユーザーまたは実行ユーザーと異なる場合、実行者権限のファンクションが、作成される問合せのテキストで別のユーザーで呼び出されることがあります。

  • 動的WHERE句を生成するファンクションが提供されると、VPDポリシーは別の方法で拡張されます。たとえば、ユーザーIDによって別の拡張が引き起こされた場合、このファンクションは別の方法で戻されます。

  • リモート・オブジェクトへの参照がある場合、結果は未定義になります。

FORMAT_CALL_STACKファンクション

このファンクションは、現行のコール・スタックをフォーマットします。このファンクションは、コール・スタックにアクセスするための任意ストアド・プロシージャまたはトリガーで使用できます。このファンクションは、デバッグ時に役立ちます。

構文

DBMS_UTILITY.FORMAT_CALL_STACK 
  RETURN VARCHAR2;

プラグマ

pragma restrict_references(format_call_stack,WNDS); 

戻り値

最大2000バイトまでのコール・スタックを戻します。

FORMAT_ERROR_BACKTRACEファンクション

このファンクションは、サブプログラムが範囲外の例外ハンドラから呼び出されているとしても、例外の発生場所にコール・スタックを表示します。出力は、SQLERRMファンクションの出力と似ていますが、サイズ制限が異なります。

構文

DBMS_UTILITY.FORMAT_ERROR_BACKTRACE 
  RETURN VARCHAR2;

戻り値

バックトレース文字列。現在処理されているエラーがない場合、NULL文字列が返されます。

CREATE OR REPLACE PROCEDURE Log_Errors ( i_buff in varchar2 ) IS
  g_start_pos integer := 1;
  g_end_pos  integer;

  FUNCTION Output_One_Line RETURN BOOLEAN IS
  BEGIN
    g_end_pos := Instr ( i_buff, Chr(10), g_start_pos );

    CASE g_end_pos > 0
      WHEN true THEN
        DBMS_OUTPUT.PUT_LINE ( Substr ( i_buff, g_start_pos,
g_end_pos-g_start_pos ) );
        g_start_pos := g_end_pos+1;
        RETURN TRUE;

      WHEN FALSE THEN
        DBMS_OUTPUT.PUT_LINE ( Substr ( i_buff, g_start_pos,
(Length(i_buff)-g_start_pos)+1 ) );
        RETURN FALSE;
    END CASE;
  END Output_One_Line;

BEGIN
  WHILE Output_One_Line() LOOP NULL; 
  END LOOP;
END Log_Errors;
/

Set Doc Off
Set Feedback off
Set Echo Off

CREATE OR REPLACE PROCEDURE P0 IS
  e_01476 EXCEPTION; pragma exception_init ( e_01476, -1476 );
BEGIN
  RAISE e_01476;
END P0;
/
Show Errors

CREATE OR REPLACE PROCEDURE P1 IS
BEGIN
  P0();
END P1;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE P2 IS
BEGIN
  P1();
END P2;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE P3 IS
BEGIN
  P2();
END P3;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE P4 IS
  BEGIN P3(); END P4;
/
CREATE OR REPLACE PROCEDURE P5 IS
  BEGIN P4(); END P5;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE Top_Naive IS
BEGIN
  P5();
END Top_Naive;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE Top_With_Logging IS
  -- NOTE: SqlErrm in principle gives the same info as Format_Error_Stack.
  -- But SqlErrm is subject to some length limits,
  -- while Format_Error_Stack is not.
BEGIN
  P5();
EXCEPTION
  WHEN OTHERS THEN
    Log_Errors ( 'Error_Stack...' || Chr(10) ||
      DBMS_UTILITY.FORMAT_ERROR_STACK() );
    Log_Errors ( 'Error_Backtrace...' || Chr(10) ||
      DBMS_UTILITY.FORMAT_ERROR_BACKTRACE() );
    DBMS_OUTPUT.PUT_LINE ( '----------' );
END Top_With_Logging;
/
SHOW ERRORS

--------------------------------------------------------------------------------

Set ServerOutput On
call Top_Naive()
  /*
  ERROR at line 1:
  ORA-01476: divisor is equal to zero
  ORA-06512: at "U.P0", line 4
  ORA-06512: at "U.P1", line 3
  ORA-06512: at "U.P2", line 3
  ORA-06512: at "U.P3", line 3
  ORA-06512: at "U.P4", line 2
  ORA-06512: at "U.P5", line 2
  ORA-06512: at "U.TOP_NAIVE", line 3
  */
  ;

Set ServerOutput On
call Top_With_Logging()
  /*
  Error_Stack...
  ORA-01476: divisor is equal to zero
  Error_Backtrace...
  ORA-06512: at "U.P0", line 4
  ORA-06512: at "U.P1", line 3
  ORA-06512: at "U.P2", line 3
  ORA-06512: at "U.P3", line 3
  ORA-06512: at "U.P4", line 2
  ORA-06512: at "U.P5", line 2
  ORA-06512: at "U.TOP_WITH_LOGGING", line 6
  ----------
  */
  ;

/*
  ORA-06512:
  Cause:
    Backtrace message as the stack is
    unwound by unhandled exceptions.
  Action:
    Fix the problem causing the exception
    or write an exception handler for this condition.
    Or you may need to contact your application administrator
    or database administrator.
*/

FORMAT_ERROR_STACKファンクション

このファンクションは、現行のエラー・スタックをフォーマットします。このファンクションは、全エラー・スタックを表示するための例外ハンドラで使用できます。

構文

DBMS_UTILITY.FORMAT_ERROR_STACK 
  RETURN VARCHAR2;

戻り値

最大2000バイトまでのエラー・スタックを戻します。

GET_CPU_TIMEファンクション

このファンクションは、現在のCPU処理時間を100分の1秒単位で戻します。2つのコールが戻す時間の差分によって、2つのポイント間のCPU処理時間(経過時間の合計ではない)を測定します。

構文

  DBMS_UTILITY.GET_CPU_TIME
   RETURN NUMBER;

戻り値

任意の時点からの時間を100分の1秒の数で戻します。

使用上の注意

実行された作業の量は、特定の操作の開始ポイントと終了ポイントの差分を測定することによって計算されます。

GET_DEPENDENCYプロシージャ

このプロシージャは、渡されたオブジェクトの依存関係を示します。

構文

  DBMS_UTILITY.GET_DEPENDENCY
   type      IN     VARCHAR2,
   schema    IN     VARCHAR2,
   name      IN     VARCHAR2);

パラメータ

表174-20 GET_DEPENDENCYプロシージャのパラメータ

パラメータ 説明

type

オブジェクトのタイプ。たとえば、オブジェクトが表の場合、タイプに'TABLE'を指定します。

schema

オブジェクトのスキーマ名。

name

オブジェクト名。


使用上の注意

このプロシージャは、DBMS_OUTPUTパッケージを使用して結果を表示するため、依存性を表示したい場合は、SET SERVEROUTPUT ONを宣言する必要があります。また、DBMS_OUTPUT出力バッファをチェックするアプリケーションでこのサブプログラムを起動し、DBMS_OUTPUTなどのGET_LINESサブプログラムを使用して出力を取得することもできます。

GET_ENDIANNESSファンクション

このファンクションは、データベース・プラットフォームのエンディアンを取得します。

構文

  DBMS_UTILITY.GET_ENDIANNESS
   RETURN NUMBER;

戻り値

データベース・プラットフォームのエンディアンを示すNUMBER値(big-endianの場合は1、little-endianの場合は2)。

GET_HASH_VALUEファンクション

このファンクションは、指定した文字列についてハッシュ値を計算します。

構文

DBMS_UTILITY.GET_HASH_VALUE (
   name      VARCHAR2, 
   base      NUMBER, 
   hash_size NUMBER)
  RETURN NUMBER;

パラメータ

表174-21 GET_HASH_VALUEファンクションのパラメータ

パラメータ 説明

name

ハッシュする文字列。

base

戻されるハッシュ値が始まるベース値。

hash_size

必要とするハッシュ表のサイズ。


プラグマ

pragma restrict_references(get_hash_value, WNDS, RNDS, WNPS, RNPS);    

戻り値

ハッシュ値は、入力文字列に基づいています。たとえば、ハッシュ値が1000から3047の範囲にある文字列についてハッシュ値を取得するには、ベース値として1000、hash_size値として2048を使用します。hash_sizeパラメータは、2の累乗を使用すると動作が最適になります。

GET_PARAMETER_VALUEファンクション

このファンクションは、指定したinit.oraパラメータの値を取得します。

構文

DBMS_UTILITY.GET_PARAMETER_VALUE (
   parnam     IN        VARCHAR2,
   intval     IN OUT    BINARY_INTEGER,
   strval     IN OUT    VARCHAR2,
   listno     IN        BINARY_INTEGER DEFAULT 1)
  RETURN BINARY_INTEGER;

パラメータ

表174-22 GET_PARAMETER_VALUEファンクションのパラメータ

パラメータ 説明

parnam

パラメータ名。

intval

整数パラメータの値、または文字列パラメータの値の長さ。

strval

文字列パラメータの値。

listno

リスト項目番号。複数回指定して複数の値を蓄積可能なパラメータからパラメータ値を取得する場合は、このパラメータを使用して個別にそれぞれのパラメータを取得します。


戻り値

パラメータ・タイプ

  • パラメータがINTEGER/BOOLEANパラメータの場合は0(ゼロ)

  • パラメータが文字列またはファイル・パラメータの場合は1

使用上の注意

  • このファンクションを実行するには、V$PARAMETER動的ビューに対するSELECT権限が必要です。

  • DBMS_UTILITY.GET_PARAMETER_VALUEを使用すると、init.oraに次のように設定されている場合、先頭のパラメータ設定の/dir1のみが戻されます。

    utl_file_dir = /dir1
    utl_file_dir = /dir2
    

    ただし、次のように指定すると、完全なカンマ区切り文字列が戻されます。

    utl_file_dir = /dir1, /dir2
    

DECLARE
  parnam VARCHAR2(256);
  intval BINARY_INTEGER;
  strval VARCHAR2(256);
  partyp BINARY_INTEGER;
BEGIN
  partyp := dbms_utility.get_parameter_value('max_dump_file_size',
                                              intval, strval);
  dbms_output.put('parameter value is: ');
  IF partyp = 1 THEN
    dbms_output.put_line(strval);
  ELSE
    dbms_output.put_line(intval);
  END IF;
  IF partyp = 1 THEN
    dbms_output.put('parameter value length is: ');
    dbms_output.put_line(intval);
  END IF;
  dbms_output.put('parameter type is: ');
  IF partyp = 1 THEN
    dbms_output.put_line('string');
  ELSE
    dbms_output.put_line('integer');
  END IF;
END;

GET_SQL_HASHファンクション

このファンクションは、MD5アルゴリズムを使用して、指定した文字列についてハッシュ値を計算します。

構文

Dbms_utility.get_sql_hash (
   name          IN   VARCHAR2,    
   hash          OUT  RAW,    
   pre10ihash    OUT  NUMBER) 
  RETURN NUMBER;

プラグマ

Pragma Restrict_references(Get_sql_hash, Wnds, Rnds, Wnps, Rnps);

パラメータ

表174-23 GET_SQL_HASHプロシージャのパラメータ

パラメータ 説明

name

ハッシュする文字列。

hash

戻されるハッシュ値の16バイトすべてを格納するフィールド(オプション)。

pre10ihash

10iより前のデータベース・バージョンのハッシュ値を格納するフィールド(オプション)。


戻り値

ハッシュ値(最後の4バイト)は、入力文字列に基づいています。MD5ハッシュ・アルゴリズムでは16バイトのハッシュ値が計算されますが、実際の数値を戻すことができるように最後の4バイトのみを戻します。オプションのRAWパラメータを使用し、16バイトすべてを取得して、10iより前の4バイトのハッシュ値をオプションのpre10i hashパラメータに格納できます。

GET_TIMEファンクション

このファンクションは、現在の時間を100分の1秒単位で判別します。このサブプログラムは、主に経過時間を確認するために使用します。このサブプログラムは、2回(プロセスの開始時と終了時)コールされ、2つ目の(後の)数から1つ目の(先の)数を引くことで経過時間を判別します。

構文

DBMS_UTILITY.GET_TIME 
  RETURN NUMBER;

戻り値

このサブプログラムが起動された時点からの時間を100分の1秒の数で戻します。

使用上の注意

プラットフォームおよびマシンに応じて、-2147483648から2147483647の範囲の数が戻されるため、アプリケーションによる間隔の判別では、数に付加される記号(マイナス記号)を考慮する必要があります。たとえば2つの数が負である場合、アプリケーション・ロジックで、1つ目の(先の)数が、よりゼロに近い2つ目の(後の)数よりも大きいことが許可される必要があります。同様に、アプリケーションでは、1つ目の(先の)数が負で2つ目の(後の)数が正であることも許可される必要があります。

GET_TZ_TRANSITIONSプロシージャ

このプロシージャは、timezone.datファイルのregionidに基づいてタイムゾーンの遷移を戻します。

構文

DBMS_UTILITY.GET_TZ_TRANSITIONS 
   regionid      IN     NUMBER,
   transitions   OUT    MAXRAW);

パラメータ

表174-24 GET_TZ_TRANSITIONSプロシージャのパラメータ

パラメータ 説明

regionid

リージョンに対応する番号。

transitions

timezone.datファイルのRAWバイト。


例外

表174-25 GET_TZ_TRANSITIONSプロシージャの例外

例外 説明

ORA-6502: PL/SQL: 数値または値のエラーが発生しました

regionidが無効です。


INVALIDATEプロシージャ

このプロシージャは、データベース・オブジェクトを無効化し、オプションでそのPL/SQLコンパイラのパラメータ設定を変更します。また、無効化されるオブジェクトに(直接的または間接的に)依存するすべてのオブジェクトも無効化します。

構文

DBMS_UTILITY.INVALIDATE ( 
   p_object_id              NUMBER,
   p_plsql_object_settings  VARCHAR2 DEFAULT NULL,
   p_option_flags           PLS_INTEGER DEFAULT 0);

パラメータ

表174-26 INVALIDATEプロシージャのパラメータ

パラメータ 説明

p_object_id

無効化するオブジェクトのID番号。これは、ALL_OBJECTSOBJECT_ID列の値と同じです。object_id引数がNULLまたは無効な値の場合は、例外inv_not_exist_or_no_privが発生します。このプロシージャのコール元は、無効化されるオブジェクトのCREATE権限を持っている必要があり、そうでない場合は、例外inv_not_exist_or_no_privが発生します。

p_plsql_object_settings

p_object_idによって指定されるオブジェクトがPL/SQLオブジェクトでない場合、無視されるこのオプションのパラメータ。このパラメータに値を指定しないと、PL/SQLコンパイラの設定は変更されず、REUSE SETTINGSと同じになります。値を指定した場合は、1つ以上の空白で区切られたPL/SQLコンパイラ設定の値を指定する必要があります。各設定は一度だけ指定でき、それ以外の場合は、例外inv_malformed_settingsが発生します。設定値は、p_object_idで指定したオブジェクトに関してのみ変更され、無効化されている可能性のある依存オブジェクトには影響しません。設定名および設定値では、大/小文字は区別されません。設定を省略し、REUSE SETTINGSを指定した場合、このライブラリ・ユニットの以前のコンパイルでのコンパイラ設定で値が指定されていると、Oracle Databaseは以前の値を使用します。設定を省略し、REUSE SETTINGSを指定しなかったか、または以前のコンパイルでパラメータを指定していなかった場合、データベースはセッション環境からこの設定のための値を取得します。

p_option_flags

このオプション・パラメータのデフォルト値はゼロ(フラグなし)です。INVALIDATEによってサポートされるオプション・フラグです。

  • inv_error_on_restrictions(「定数」を参照): このサブプログラムは、無効化が可能なオブジェクトに様々な制限を課します。たとえば、p_object_idによって指定されたオブジェクトは表にできません。デフォルトでは、これらの条件に対してINVALIDATEが暗黙的に戻されます(例外は発生しません)。コール元がこのフラグを設定した場合は、例外inv_restricted_objectが発生します。


例外

表174-27 INVALIDATEの例外

例外 説明

INV_NOT_EXIST_OR_NO_PRIV

object_id引数がNULLまたは無効な値の場合、あるいは無効化されているオブジェクトのCREATE権限をコール元が持っていない場合に発生します。

INV_MALFORMED_SETTINGS

コンパイラの設定がp_plsql_object_settingsパラメータで複数回指定された場合に発生します。

INV_RESTRICTED_OBJECT

p_object_idパラメータに関連する条件の様々な組合せが互いに矛盾する場合に発生します。


使用上の注意

p_object_idによって指定されるオブジェクトのオブジェクト・タイプ(ALL_OBJECTSobject_type列)は、PROCEDUREFUNCTIONPACKAGEPACKAGE BODYTRIGGERTYPETYPE BODYLIBRARYVIEWOPERATORSYNONYM、またはJAVA CLASSである必要があります。オブジェクトがこれらのタイプのいずれでもなく、p_option_flagsにフラグinv_error_on_restrictionsが指定されている場合は、例外inv_restricted_objectが発生しますが、そうでない場合は、何も実行されません。

p_object_idによって指定されるオブジェクトがSTANDARDのパッケージ仕様部、DBMS_STANDARDのパッケージ仕様部、あるいはDBMS_UTILITYのパッケージ仕様部または本体であり、p_option_flagsにフラグinv_error_on_restrictionsが指定されている場合は、例外inv_restricted_objectが発生します。そうでない場合は、何も実行されません。

p_object_idによって指定されるオブジェクトがオブジェクト・タイプ仕様部であり、そのタイプに依存する表が存在し、p_option_flagsにフラグinv_error_on_restrictionsが指定されている場合は、例外inv_restricted_objectが発生します。そうでない場合は、何も実行されません。

例1

DBMS_UTILITY.INVALIDATE (1232, 'PLSQL_OPTIMIZE_LEVEL = 2 REUSE SETTINGS');

object_id 1232がHRスキーマのremove_empプロシージャを参照するとします。この場合、前述のコールはremove_empプロシージャを無効とマークし、そのPLSQL_OPTIMIZE_LEVELコンパイラ設定を2に変更します。REUSE SETTINGSが指定されているため、他のコンパイラ設定の値は変更されません。

hr.remove_empに依存するオブジェクトも無効とマークされます。これらのコンパイラのパラメータは変更されません。

例2

DBMS_UTILITY.INVALIDATE (40775, 'plsql_code_type = native');

object_id 40775がOEスキーマのタイプ本体leaf_category_typを参照するとします。この場合、前述のコールは、このタイプ本体を無効とマークし、そのPLSQL_CODE_TYPEコンパイラ設定をNATIVEに変更します。REUSE SETTINGSが指定されているため、他のコンパイラ設定の値は現行のセッション環境から取得されます。

本体に依存できるオブジェクトはないため、無効化の伝達はありません。

例3

DBMS_UTILITY.INVALIDATE (40796);

object_id 40796がOEスキーマのビューoc_ordersを参照するとします。この場合、前述のコールはoc_ordersビューを無効とマークします。

oe.oc_ordersに依存するオブジェクトも無効とマークされます。

IS_BIT_SETファンクション

このファンクションは、指定のRAW値の、指定のビットのビット設定をチェックします。

構文

DBMS_UTILITY.IS_BIT_SET (
   r     IN    RAW,   n     IN    NUMBER)
 RETURN NUMBER;

パラメータ

表174-28 IS_BET_SETファンクションのパラメータ

パラメータ 説明

r

RAWソース。

n

チェック対象のr内のビット。


戻り値

このファンクションは、raw rでビットnが設定されている場合は1を、それ以外の場合は0(ゼロ)を戻します。ビットは、ビット番号1以上の値が番号付けられます。

IS_CLUSTER_DATABASEファンクション

このファンクションは、このデータベースがクラスタ・データベース・モードで実行されているかどうかを検出します。

構文

DBMS_UTILITY.IS_CLUSTER_DATABASE 
  RETURN BOOLEAN;

戻り値

インスタンスがクラスタ・データベース・モードで起動されている場合はTRUEを戻し、それ以外の場合はFALSEを戻します。

MAKE_DATA_BLOCK_ADDRESSファンクション

このファンクションは、ファイル番号とブロック番号を指定したデータ・ブロック・アドレスを作成します。データ・ブロック・アドレスは、データベース内のブロックを識別するために使用する内部構造です。このファンクションは、データ・ブロック・アドレスを含んだ特定の固定表にアクセスするときに役立ちます。

構文

DBMS_UTILITY.MAKE_DATA_BLOCK_ADDRESS (
   file  NUMBER, 
   block NUMBER) 
  RETURN NUMBER;

パラメータ

表174-29 MAKE_DATA_BLOCK_ADDRESSファンクションのパラメータ

パラメータ 説明

file

ブロックを含むファイル。

block

ブロック増分値に基づくファイル内でのブロックのオフセット。


プラグマ

pragma restrict_references (make_data_block_address, WNDS, RNDS, WNPS, RNPS);

戻り値

データ・ブロック・アドレス。

NAME_RESOLVEプロシージャ

このプロシージャは、指定した名前を解決します。必要に応じてシノニム変換と認可チェックが含まれます。

構文

DBMS_UTILITY.NAME_RESOLVE (
   name          IN  VARCHAR2, 
   context       IN  NUMBER,
   schema        OUT VARCHAR2, 
   part1         OUT VARCHAR2, 
   part2         OUT VARCHAR2,
   dblink        OUT VARCHAR2, 
   part1_type    OUT NUMBER, 
   object_number OUT NUMBER);

パラメータ

表174-30 NAME_RESOLVEプロシージャのパラメータ

パラメータ 説明

name

オブジェクト名。

これは、[[a.]b.]c[@d]の形式で指定でき、この場合、a、b、cはSQL識別子、dは、dblinkです。dblinkでは、構文チェックは実行されません。dblinkが指定されている場合や名前がdblinkの一部に変換される場合、オブジェクトは解決されませんが、schemapart1part2およびdblink OUTの各パラメータには値が入力されます。

a、bおよびcは、デリミタ付き識別子の場合があり、グローバリゼーション・サポート(NLS)文字(シングルおよびマルチバイト)を含む場合があります。

context

0から9の範囲の整数を指定します。

  • 0 - 表

  • 1 - PL/SQL(2つの部分の名前の場合)

  • 2 - 順序

  • 3 - トリガー

  • 4 - Javaソース

  • 5 - Javaリソース

  • 6 - Javaクラス

  • 7 - タイプ

  • 8 - Java共有データ

  • 9 - 索引

schema

オブジェクトのスキーマ。nameパラメータにスキーマが指定されていない場合、schemaは、名前を解決することによって決定されます。

part1

名前の最初の部分。この名前のタイプは、part1_typeに指定されます(シノニムまたはパッケージ)。

part2

NULL以外に設定すると、これがサブプログラム名となります。part1がNULL以外の場合、このサブプログラムはpart1が示すパッケージ内に配置されます。part1がNULLの場合、このサブプログラムはトップ・レベルのサブプログラムになります。

dblink

このパラメータがNULL以外の場合、データベース・リンクは、nameの一部として指定されたか、またはnameがデータベース・リンクの一部に変換されるシノニムとして指定されたかのいずれかです。名前変換がさらに必要な場合は、このリモート・ノードでDBMS_UTILITY.NAME_RESOLVEプロシージャをコールする必要があります。

part1_type

part1のタイプは、次のとおりです。

  • 5 シノニム

  • 7 プロシージャ(トップレベル)

  • 8 ファンクション(トップレベル)

  • 9 パッケージ

object_number

オブジェクト識別子。


例外

すべてのエラーは、例外を呼び出すことによって処理されます。オブジェクト名の指定時に起こり得る各種の構文エラーに基づいて、広範囲にわたる例外が用意されています。

NAME_TOKENIZEプロシージャ

このプロシージャは、次のように指定した名前を解析するパーサーをコールします。

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

二重引用符を削除するか、または引用符がない場合は大文字に変換します。ソートに関するすべてのコメントは無視し、意味的な分析は行いません。不明な値はNULLのまま残ります。

構文

DBMS_UTILITY.NAME_TOKENIZE ( 
   name    IN  VARCHAR2,
   a       OUT VARCHAR2,
   b       OUT VARCHAR2,
   c       OUT VARCHAR2,
   dblink  OUT VARCHAR2, 
   nextpos OUT BINARY_INTEGER);

パラメータ

表174-31 NAME_RESOLVEプロシージャのパラメータ

パラメータ 説明

name

SQL識別子で構成された入力名(scott.foo@dblinkなど)。

a

名前の1番目のトークンに対応する出力。

b

名前の2番目のトークンに対応する出力(該当する場合)。

c

名前の3番目のトークンに対応する出力(該当する場合)。

dblink

名前のdblinkに対応する出力。

nextpos

入力名解析後の次の位置。


OLD_CURRENT_SCHEMAファンクション

このファンクションは、sys_context ('userenv', 'current_schema')からのセッション値を戻します。

構文

DBMS_UTILITY.OLD_CURRENT_SCHEMA 
 RETURN VARCHAR2;

OLD_CURRENT_USERファンクション

このファンクションは、sys_context ('userenv', 'current_user')からのセッション値を戻します。

構文

DBMS_UTILITY.OLD_CURRENT_USER 
 RETURN VARCHAR2;

PORT_STRINGファンクション

このファンクションは、オペレーティング・システムと、TWO TASK PROTOCOLバージョンのデータベースを識別する文字列を戻します。たとえば、VAX/VMX-7.1.0.0が戻ります。

最大長はポート固有の長さです。

構文

DBMS_UTILITY.PORT_STRING 
   RETURN VARCHAR2;

プラグマ

pragma restrict_references(port_string, WNDS, RNDS, WNPS, RNPS);

SQLID_TO_SQLHASHファンクション

このファンクションは、SQL IDをハッシュ値に変換します。

構文

DBMS_UTILITY.SQLID_TO_SQLHASH (
   sql_id    IN   VARCHAR2) 
 RETURN NUMBER;

パラメータ

表174-32 SQLID_TO_SQLHASHファンクションのパラメータ

パラメータ 説明

sql_id

SQL文のSQL ID。VARCHAR2(13)である必要があります。


TABLE_TO_COMMAプロシージャ

このプロシージャは、名前のPL/SQL表を名前のカンマ区切りリストに変換します。PL/SQL表を1..nに変換してn+1 nullで終了します。2番目のバージョンでは、完全修飾属性名をサポートしています。

構文

DBMS_UTILITY.TABLE_TO_COMMA ( 
   tab    IN  UNCL_ARRAY, 
   tablen OUT BINARY_INTEGER,
   list   OUT VARCHAR2);

DBMS_UTILITY.TABLE_TO_COMMA ( 
   tab    IN  lname_array,
   tablen OUT BINARY_INTEGER,
   list   OUT VARCHAR2);

パラメータ

表174-33 TABLE_TO_COMMAプロシージャのパラメータ

パラメータ 説明

tab

表名のリストを含んだPL/SQL表。

tablen

PL/SQL表にある表の数。

list

表名のカンマで区切られたリスト。


戻り値

カンマで区切られたリストおよび表内で検出された要素の数。

VALIDATEプロシージャ

このプロシージャは、無効なデータベース・オブジェクトを有効にします。

構文

DBMS_UTILITY.VALIDATE(
    object_id       NUMBER);

DBMS_UTILITY.VALIDATE(
   owner          VARCHAR2, 
   objname        VARCHAR2, 
   namespace      NUMBER,   edition_name   := SYS_CONTEXT ('USERENV', 'CURRENT_EDITION'));

パラメータ

表174-34 VALIDATEプロシージャのパラメータ

パラメータ 説明

owner

オブジェクトを所有するユーザーの名前。ALL_OBJECTSOWNERフィールドと同じです。

objname

検証するオブジェクトの名前。ALL_OBJECTSOBJECT_NAMEフィールドと同じです。

namespace

オブジェクトのネームスペース。obj$のネームスペースフィールドと同じです。同等の数値は次のとおりです。

  • 1 = TABLE/PROCEDURE/TYPE

  • 2 = BODY

  • 3 = TRIGGER

  • 4 = INDEX

  • 5 = CLUSTER

  • 8 = LOB

  • 9 = DIRECTORY

  • 10 = QUEUE

  • 11 = REPLICATION OBJECT GROUP

  • 12 = REPLICATION PROPAGATOR

  • 13 = JAVA SOURCE

  • 14 = JAVA RESOURCE

  • 58 =(データ・マイニング)MODEL

edition_name

(注意: 現在使用不可。将来使用するために予約されています。)


使用上の注意

  • オブジェクトが、存在しないか、すでに有効か、検証不可能な場合、エラーは発生しません。

  • 検証されるオブジェクトが指定したエディションに実在しない場合、サブプログラムは検証前にオブジェクトが実在するエディションに自動的に切り替わります。つまり、VALIDATEをコールしても、指定したエディションではオブジェクトは実体化されません。

  • INVALIDATEプロシージャはデータベース・オブジェクトを無効化し、オプションでそのPL/SQLコンパイラのパラメータ設定を変更します。無効化するオブジェクトはそのobject_idで指定します。無効化の前に、サブプログラムは自動的にオブジェクトが実在するエディションに切り替わります。つまり、INVALIDATEをコールしても、現行のエディションではオブジェクトは実体化されません。

WAIT_ON_PENDING_DMLファンクション

このファンクションは、リストされた表にロックをかけていて、指定したscnより前に開始されているすべてのトランザクション(コール元自体のトランザクションを除く)がコミットされるか、またはロールバックされるまで待機します。

構文

DBMS_UTILITY.WAIT_ON_PENDING_DML (
    tables     IN       VARCHAR2,
    timeout    IN       BINARY_INTEGER,
    scn        IN OUT   NUMBER)
  RETURN BOOLEAN;

パラメータ

表174-35 WAIT_ON_PENDING_DMLファンクションのパラメータ

パラメータ 説明

tables

1つ以上の表の名前のカンマ区切りリスト。このリストは、COMMA_TO_TABLEプロシージャに対して有効である必要があり、各項目がNAME_RESOLVEプロシージャに対して有効である必要があります。名前には、列指定子またはDBLINK(データベース・リンク)指定子いずれも使用できず、それぞれの名前がローカル・データベースの既存の表に解決される必要があります。

timeout

待機する最大秒数(すべての表およびトランザクションでの合計)。NULLまたは負の値を指定すると、待機時間が非常に長くなります。

scn

SCNで、トランザクションがこの要求に関連するとみなされるには、このSCNより前に開始されている必要があります。値がNULLか、または入力時に意味のあるSCNとして認識されない場合、すべてのインスタンスで最新のSCNが使用され、渡される引数に出力として設定されます。意味のある値が渡された場合は、その値は出力に保持されます。


戻り値

関連するすべてのトランザクションがコミットされたか、またはロールバックされた場合はTRUE、関連するすべてのトランザクションがコミットまたはロールバックする前にタイムアウトが発生した場合はFALSEとなります。