PL/SQLのアーキテクチャ

PL/SQLアーキテクチャの基本的な理解は、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コンパイル・パラメータ

パラメータ 説明

PLSCOPE_SETTINGS

コンパイル時のコレクション、相互参照、およびPL/SQLソース・テキストの識別子データの格納を制御します。PL/Scopeツールにより使用されます(『Oracle Database開発ガイド』を参照)。

PLSCOPE_SETTINGSの詳細は、『Oracle Databaseリファレンス』を参照してください。

PLSQL_CCFLAGS

各PL/SQLユニットの条件付きコンパイルを独立して制御できます。

PLSQL_CCFLAGSの詳細は、「条件付きコンパイルの動作方法」および『Oracle Databaseリファレンス』を参照してください。

PLSQL_CODE_TYPE

PL/SQLユニットのコンパイル・モードINTERPRETED(デフォルト)またはNATIVEを指定します。どちらのモードを使用するかについては、「PL/SQLのネイティブ・コンパイルを使用するかどうかの判断」を参照してください。

(PLSQL_OPTIMIZE_LEVELによって設定された)最適化レベルが2より小さい場合:

  • コンパイラは、PLSQL_CODE_TYPEに関係なく、解釈済コードを生成します。

  • NATIVEを指定した場合、コンパイラはNATIVEが無視されたことを警告します。

PLSQL_CODE_TYPEの詳細は、『Oracle Databaseリファレンス』を参照してください。

PLSQL_OPTIMIZE_LEVEL

PL/SQLユニットのコンパイルで使用される最適化レベルを指定します(レベルを高くすると、コンパイラでより多くのPL/SQLユニットの最適化が試行されます)。

PLSQL_OPTIMIZE_LEVEL=1で、PL/SQLデバッガで使用するためのコードを生成して格納するようにPL/SQLコンパイラに指示できます。

PLSQL_OPTIMIZE_LEVELの詳細は、「PL/SQLオプティマイザ」および『Oracle Databaseリファレンス』を参照してください。

PLSQL_WARNINGS

PL/SQLコンパイラによる警告メッセージのレポートを有効または無効にし、エラーとして表示する警告メッセージを指定します。

PLSQL_WARNINGSの詳細は、「コンパイル時の警告」および『Oracle Databaseリファレンス』を参照してください。

NLS_LENGTH_SEMANTICS

バイト長セマンティクスまたは文字長セマンティクスのいずれかを使用して、CHARおよびVARCHAR2列を作成できます。

バイト長セマンティクスおよび文字長セマンティクスの詳細は、「CHARおよびVARCHAR2変数」を参照してください。

NLS_LENGTH_SEMANTICSの詳細は、『Oracle Databaseリファレンス』を参照してください。

PERMIT_92_WRAP_FORMAT

9.2 PL/SQLコンパイラでコンパイルされているラップされたパッケージを12.1 PL/SQLコンパイラが使用できるかどうかを指定します。デフォルト値はTRUEです。

ラップされたパッケージの詳細は、「PL/SQLのソース・テキストのラップ」を参照してください。

PERMIT_92_WRAP_FORMATの詳細は、『Oracle Databaseリファレンス』を参照してください。

ノート:

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文」を参照してください。