5 DBMS_PREPROCESSOR
DBMS_PREPROCESSOR
パッケージは、後処理された形式でPL/SQLユニットのソース・テキストの出力または取出しを行うためのインタフェースを提供します。
このパッケージの内容は次のおとりです。
-
-
概要
-
操作上のノート
-
-
-
表タイプ
-
DBMS_PREPROCESSORの使用
概要
サブプログラムには3つのスタイルがあります。
-
スキーマ名、ユニット・タイプ名およびユニット名を使用するサブプログラム
-
任意のPL/SQLのコンパイル・ユニットのソース・テキストを含む
VARCHAR2
の文字列を使用するサブプログラム -
任意のPL/SQLのコンパイル・ユニットのセグメント化されたソース・テキストを含む
VARCHAR2
連想配列(索引付き表)を使用するサブプログラム
1つ目のスタイルのサブプログラムは、保存されたPL/SQLユニットの後処理済ソース・テキストの出力または取出しのために使用されます。ユーザーは、このユニットの元のソース・テキストを表示するための権限が必要です。また、ユーザーは、ユニットが定義されているスキーマ、ユニット・タイプおよびユニット名を指定する必要もあります。スキーマがNULLの場合は、現行のユーザー・スキーマが使用されます。保存されたユニットのステータスがVALID
で、ユーザーが必要な権限を持っている場合、後処理済のソース・テキストは、最後にコンパイルされたユニットのソース・テキストと同じであることが保証されます。
2つ目または3つ目のスタイルのサブプログラムは、現行のユーザー・スキーマで後処理済のソース・テキストを生成するために使用されます。ソース・テキストは、2つ目のスタイルでは単一のVARCHAR2
の文字列として、3つ目のスタイルではVARCHAR2
連想配列として渡されます。ソース・テキストには、任意のPL/SQLのコンパイル・ユニットを指定できます。通常は、無名ブロックのソース・テキストを渡して、現行のユーザー・スキーマに後処理済のソース・テキストを生成するために使用されます。3つ目のスタイルは、ソース・テキストがVARCHAR2
の長さの制限を超える場合に有効です。
操作上のノート
-
1つ目のスタイルのサブプログラムの場合、保存されたPL/SQLユニットのステータスは
VALID
である必要はありません。また、VARCHAR2
の文字列またはVARCHAR2
の連想配列として渡されたソース・テキストは、コンパイル時にエラーが発生する可能性があります。後処理済のソースの生成時にエラーが見つかった場合、後処理済のソース・テキストの最後にエラー・メッセージ・テキストも表示されます。エラーが原因で前処理が終了することがあります。この場合、後処理済のソース・テキストが不完全な状態で表示され、関連するエラー・メッセージによって前処理中にエラーが発生したことを確認できます。 -
2つ目または3つ目のスタイルのサブプログラムの場合、ソース・テキストに任意のPL/SQLのコンパイル・ユニットを指定できます。ただし、有効なPL/SQLのコンパイル・ユニットのソース・テキストに、
CREATE OR REPLACE
などの一般に使用されている接頭辞を含めることはできません。通常は、ALL_SOURCE
ビューから取得する場合と同様の方法で、入力ソースの構文を準備する必要があります。次のリストに、PL/SQLのコンパイル・ユニットに有効な初期構文の例を示します。anonymous block (BEGIN | DECLARE) ... package PACKAGE name ... package body PACKAGE BODY name ... procedure PROCEDURE name ... function FUNCTION name ...
ソース・テキストが有効な名前付きPL/SQLユニットを示す場合、後処理済のソース・テキストの生成後にそのユニットは作成されません。
-
ラップされたPL/SQLユニットのテキストが
ALL_SOURCE
ビューから取得された場合、通常、キーワードWRAPPED
はユニット名の直後に指定されます。次に例を示します。PROCEDURE "some proc" WRAPPED a000000 b2 ...
このようなソース・テキストがGET_POST_PROCESSED_SOURCEファンクションまたはPRINT_POST_PROCESSED_SOURCEプロシージャに渡されると、例外
WRAPPED_INPUT
が発生します。
データ構造
DBMS_PREPROCESSOR
パッケージは、表タイプを定義します。
ノート:
-
PLS_INTEGER
データ・タイプとBINARY_INTEGER
データ・タイプは同じです。このドキュメントでは、リファレンス情報でデータ・タイプ(表タイプ、レコード・タイプ、サブプログラム・パラメータ、サブプログラム戻り値など)を示す場合にBINARY_INTEGER
を使用しますが、説明および例ではいずれも使用される場合があります。 -
INTEGER
データ・タイプとNUMBER(38)
データ・タイプも同じです。このドキュメントでは、全体をとおしてINTEGER
を使用します。
表タイプ
DBMS_PREPROCESSORのサブプログラム
表5-1に、DBMS_PREPROCESSOR
のサブプログラムの概要と各サブプログラムの詳細な説明を示します。
表5-1 DBMS_PREPROCESSORパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
後処理済のソース・テキストを戻します。 |
|
後処理済のソース・テキストを出力します。 |
GET_POST_PROCESSED_SOURCEファンクション
このオーバーロードされたファンクションは、後処理済のソース・テキストを戻します。複数の機能を構文形式ごとに、定義とともに示します。
構文
保存されたPL/SQLユニットの後処理済のソース・テキストを戻します。
DBMS_PREPROCESSOR.GET_POST_PROCESSED_SOURCE (
object_type IN VARCHAR2,
schema_name IN VARCHAR2,
object_name IN VARCHAR2)
RETURN dbms_preprocessor.source_lines_t;
コンパイル・ユニットの後処理済のソース・テキストを戻します。
DBMS_PREPROCESSOR.GET_POST_PROCESSED_SOURCE (
source IN VARCHAR2)
RETURN dbms_preprocessor.source_lines_t;
コンパイル・ユニットのソース・テキストを含む連想配列(索引付き表)の後処理済のソース・テキストを戻します。
DBMS_PREPROCESSOR.GET_POST_PROCESSED_SOURCE (
source IN dbms_preprocessor.source_lines_t)
RETURN dbms_preprocessor.source_lines_t;
パラメータ
表5-2 GET_POST_PROCESSED_SOURCEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
スキーマ名(引用された識別子を使用しないかぎり、大/小文字は区別されません)
|
|
オブジェクトの名前(引用された識別子を使用しないかぎり、大/小文字は区別されません) |
|
コンパイル・ユニットのソース・テキスト |
|
コンパイル・ユニットのソース・テキストを含む連想配列 ソース・テキストは、すべてのNULLではない連想配列の要素を昇順の索引順序で連結したものです。 |
戻り値
索引1から開始する後処理済のソース・テキストの行を含む連想配列
使用上のノート
-
改行文字は削除されません。
-
後処理済のソース・テキストの各行は、連想配列の行にマップされます。
-
後処理済のソースでは、未選択のテキストはブランク行となります。
例外
表5-3 GET_POST_PROCESSED_SOURCEファンクションの例外
例外 | 説明 |
---|---|
|
権限が不十分であるか、オブジェクトが存在しません |
|
不正なオブジェクト・タイプ値( |
|
ソース・テキストが空です |
|
識別子がありません
|
|
数値または値のエラーが発生しました。
|
PRINT_POST_PROCESSED_SOURCEプロシージャ
このオーバーロードされたプロシージャは、DBMS_OUTPUT.PUT_LINE
をコールして後処理済のソース・テキストを表示できます。複数の機能を構文形式ごとに、定義とともに示します。
構文
保存されたPL/SQLユニットの後処理済のソース・テキストを出力します。
DBMS_PREPROCESSOR.PRINT_POST_PROCESSED_SOURCE (
object_type IN VARCHAR2,
schema_name IN VARCHAR2,
object_name IN VARCHAR2);
コンパイル・ユニットの後処理済のソース・テキストを出力します。
DBMS_PREPROCESSOR.PRINT_POST_PROCESSED_SOURCE (
source IN VARCHAR2);
コンパイル・ユニットのソース・テキストを含む連想配列の後処理済のソース・テキストを出力します。
DBMS_PREPROCESSOR.PRINT_POST_PROCESSED_SOURCE (
source IN dbms_preprocessor.source_lines_t);
パラメータ
表5-4 PRINT_POST_PROCESSED_SOURCEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
スキーマ名(引用された識別子を使用しないかぎり、大/小文字は区別されません)
|
|
オブジェクトの名前(引用された識別子を使用しないかぎり、大/小文字は区別されません) |
|
コンパイル・ユニットのソース・テキスト |
|
コンパイル・ユニットのソース・テキストを含む連想配列 ソース・テキストは、すべてのNULLではない連想配列の要素を昇順の索引順序で連結したものです。 |
使用上のノート
連想配列には、空白が含まれる場合があります。Null要素は、連結時に無視されます。
例外
表5-5 PRINT_POST_PROCESSED_SOURCEプロシージャの例外
例外 | 説明 |
---|---|
|
権限が不十分であるか、オブジェクトが存在しません |
|
不正なオブジェクト・タイプ値( |
|
ソース・テキストが空です |
|
識別子がありません
|
|
数値または値のエラーが発生しました。
|