PL/SQLのアーキテクチャ
PL/SQLエンジン
PL/SQLコンパイルおよびランタイム・システムは、PL/SQLユニットをコンパイルして実行するエンジンです。
このエンジンは、データベースにインストールすることも、Oracle Formsのようなアプリケーション開発ツールにインストールすることもできます。
どちらの環境でも、PL/SQLエンジンは任意の適切なPL/SQLユニットを入力として受け入れます。図2-1に示すように、SQLエンジンはプロシージャ文のみを実行し、SQL文をデータベースのSQLエンジンに送信します。
通常、PL/SQLユニットはデータベースによって処理されます。
アプリケーション開発ツールは、PL/SQLユニットを処理する際に、それらをローカルのPL/SQLエンジンに渡します。PL/SQLユニットにSQL文がない場合、ローカルのエンジンがPL/SQLユニット全体を処理します。アプリケーション開発ツールが条件制御や反復制御を活用できる場合は、この機能が特に便利です。
たとえば、Oracle Formsアプリケーションは、フィールド・エントリの値のテストや単純な計算のためにSQL文を頻繁に使用します。SQLのかわりにPL/SQLを使用すると、これらのアプリケーションはデータベースへのコールを回避できます。
PL/SQLユニットおよびコンパイル・パラメータ
PL/SQLユニットは、PL/SQLコンパイル・パラメータ(データベース初期化パラメータのカテゴリ)によって影響を受けます。異なるPL/SQLユニット(パッケージの仕様部や本体など)に、異なるコンパイル・パラメータ設定を含めることができます。
PL/SQLユニットは、次のいずれかです。
-
PL/SQLの無名ブロック
-
FUNCTION
-
LIBRARY
-
PACKAGE
-
PACKAGE
BODY
-
PROCEDURE
-
TRIGGER
-
TYPE
-
TYPE
BODY
表2-2に、PL/SQLコンパイル・パラメータの概要を示します。指定したPL/SQLユニットまたはすべてのPL/SQLユニットについて、これらのパラメータの値を表示するには、静的データ・ディクショナリ・ビューALL_PLSQL_OBJECT_SETTINGS
を問い合せます。このビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
表2-2 PL/SQLコンパイル・パラメータ
パラメータ | 説明 |
---|---|
コンパイル時のコレクション、相互参照、およびPL/SQLソース・テキストの識別子データの格納を制御します。PL/Scopeツールにより使用されます(『Oracle Database開発ガイド』を参照)。
|
|
各PL/SQLユニットの条件付きコンパイルを独立して制御できます。
|
|
PL/SQLユニットのコンパイル・モード (
|
|
PL/SQLユニットのコンパイルで使用される最適化レベルを指定します(レベルを高くすると、コンパイラでより多くのPL/SQLユニットの最適化が試行されます)。
|
|
PL/SQLコンパイラによる警告メッセージのレポートを有効または無効にし、エラーとして表示する警告メッセージを指定します。
|
|
バイト長セマンティクスまたは文字長セマンティクスのいずれかを使用して、 バイト長セマンティクスおよび文字長セマンティクスの詳細は、「CHARおよびVARCHAR2変数」を参照してください。
|
|
9.2 PL/SQLコンパイラでコンパイルされているラップされたパッケージを12.1 PL/SQLコンパイラが使用できるかどうかを指定します。デフォルト値は ラップされたパッケージの詳細は、「PL/SQLのソース・テキストのラップ」を参照してください。
|
ノート:
PL/SQLユニットをデバッグ用にコンパイルするかどうかを指定するコンパイル・パラメータPLSQL_DEBUG
は、非推奨になりました。PL/SQLユニットをデバッグ用にコンパイルするには、PLSQL_OPTIMIZE_LEVEL=1
を指定します。
表2-2のパラメータのコンパイル時の値が各ストアドPL/SQLユニットのメタデータとともに格納されており、ユニットを明示的に再コンパイルする際にその値を再利用できます。(ストアドPL/SQLユニットは、「CREATE [ OR REPLACE ]文」の1つを使用して作成します。無名ブロックは、ストアドPL/SQLユニットではありません。)
ストアドPL/SQLユニットを明示的に再コンパイルして、そのパラメータ値を再利用するには、ALTER
文をCOMPILE
句およびREUSE
SETTINGS
句とともに使用する必要があります。すべてのALTER
文にこの句があります。ALTER
文の一覧は、「ALTER文」を参照してください。