Oracle Database PL/SQL言語リファレンス 12cリリース2 (12.2)の変更点

Oracle Database 12c リリース2 (12.2)に関して、『Oracle Database PL/SQL言語リファレンス』では次の新機能について解説しています。

新機能

ACCESSIBLE BY句の機能拡張

ACCESSIBLE BY句は、サブプログラムの起動が安全であると見なされるPL/SQLユニットのリストを指定し、その他すべてをブロックします。

Oracle Database 12cリリース2 (12.2)以降、パッケージ内の個々のサブプログラムに対してaccessorリストを定義できるようになりました。パッケージ自体に定義されたaccessorリスト(ある場合)に加え、このリストがチェックされます。このリストは、サブプログラムへのアクセスを制限できるのみで、アクセスを広げることはできません。このコード管理機能は、内部プログラムの誤った使用を防止するために役立ちます。たとえば、1つのパッケージを再編成して、アクセス制限が必要な少数のプロシージャのパッケージと、パブリック・アクセスが必要な残りのユニットのパッケージという2つのパッケージにすることはできません。

関連項目:

構文およびセマンティクスの詳細は、ACCESSIBLE BY句を参照してください。

データバインドされた照合

照合(ソート順序付けとも呼ばれる)は、2つの文字列が比較およびソートされるときに、ある文字列が別の文字列と等しいか、別の文字列の前に来るか後に来るかを決定する一連のルールです。

異なる照合は、異なる話し言葉のルールに対応します。照合依存の演算は、テキストを比較し、比較ルールの制御に照合を必要とする演算です。等価演算子および組込みファンクションINSTRは、照合依存の演算の例です。

Oracle Database 12cリリース2 (12.2)では、文字データの演算に適用される照合を制御するためのアーキテクチャが追加されました。新しいアーキテクチャでは、照合は文字データの属性(データ型に類似したもの)になります。列に対して照合を宣言できるようになり、列を参照している照合依存のすべてのSQL操作によってこの照合が自動的に適用されます。データバインドされた照合の機能では、ISO/IECのSQL標準と互換性がある構文およびセマンティクスが使用されます。

このリリースのPL/SQL言語は、データバインドされた照合のアーキテクチャに対して限定的なサポートを提供します。PL/SQL式で処理されるすべてのデータは、照合USING_NLS_COMPと互換性があるものと見なされます。この疑似照合は、照合依存の演算子に対して、以前のOracle Databaseリリースの場合と同じように動作するように指示します。つまり、セッション・パラメータNLS_COMPおよびNLS_SORTの値によって、使用する照合が決まります。ただし、PL/SQLに埋め込まれたSQL文、またはPL/SQLで動的に構成されたSQL文はすべて、新しいアーキテクチャを完全にサポートします。

Oracle Database 12cリリース2では、表、ビュー、マテリアライズド・ビュー、パッケージ、ストアド・プロシージャ、ストアド・ファンクション、トリガーおよび型に対するデフォルトの照合と呼ばれる新しいプロパティが追加されました。ユニットのデフォルトの照合は、そのユニット内で明示的に照合の宣言を行っていないデータ・コンテナ(列、変数、パラメータ、リテラルおよび戻り値など)に対する照合を決定します。このリリースでは、パッケージ、ストアド・プロシージャ、ストアド・ファンクション、トリガーおよび型に対するデフォルトの照合はUSING_NLS_COMPであることが必要です。

構文およびセマンティクスの詳細は、DEFAULT COLLATION句を参照してください。

デフォルトの照合がUSING_NLS_COMP以外のスキーマでPL/SQLユニットを容易に作成できるよう、次の文の構文およびセマンティクスが変更され、オブジェクトのデフォルトの照合をUSING_NLS_COMPとして明示的に宣言できるようになりました。
次の文のCOMPILE REUSE SETTINGS句のコンパイル・セマンティクスが修正されました。

関連項目:

リモート・プロシージャの定義者権限の制御

アプリケーションでデータベース・リンクおよび定義者権限プロシージャを使用する場合、ユーザーによる定義者権限プロシージャの実行時に権限を付与する方法を制御できます。

新しい権限INHERIT REMOTE PRIVILEGESにより、現在のユーザーは、定義者権限(DR)プロシージャ内から接続ユーザー・データベース・リンクを使用できます。この権限がない場合、DRプロシージャは接続ユーザー・データベース・リンクを介して接続できません。

詳細は、DRユニット内の接続ユーザー・データベース・リンクを参照してください

PL/SQL式の機能拡張

Oracle Database 12cリリース2 (12.2)以降、以前はリテラル定数のみが許可されていた宣言で式を使用できるようになりました。

サブタイプの宣言で静的な式を使用できるようになりました。

静的な式の定義が拡大され、すべてのPL/SQLスカラー型に加え、より広範囲の演算子が含まれるようになりました。文字オペランドは、ASCII文字セットの安全なサブセットに制限されます。結果が暗黙的なNLSパラメータに依存する演算子は許可されません。

式の拡張と一般化は、PL/SQL開発者にとって主に2つのメリットがあります。

  • プラグマは、環境内の変更に対してより適合性があります。

  • プラグマはよりコンパクトかつ明瞭で、その理解とメンテナンスが大幅に簡単になります

詳細は、静的な式を参照してください。

PL/SQLでのSQL JSON演算子のサポート

この機能により、Oracle Databaseに格納されたJSONドキュメントと連携し、リレーショナル・データからJSONドキュメントを生成することが容易になります。

SQLを使用してリレーショナル・データからJSONドキュメントを宣言的に生成する機能や、JSONドキュメントをPL/SQLオブジェクトとして操作する機能など、新しい機能を追加することによって、Oracle DatabaseでのデータベースへJSONドキュメントの格納および問合せのサポートは拡張されます。SQL JSON演算子は、若干の例外を除き、PL/SQLでサポートされます。例外のリストは、PL/SQL式でのSQLファンクションを参照してください。

関連項目:

データベースに格納されたJSONデータとともにPL/SQLを使用する方法の詳細は、Oracle Database JSON開発者ガイドを参照してください

長い識別子のサポート

PL/SQLによって使用および定義されるすべての識別子の最大長が以前のリリースの30バイトから128バイトに増えました。

COMPATIBLEパラメータが12.2.0以上の値に設定されている場合、データベース・キャラクタ・セットでの識別子表現は、128バイトを超えないように定義する必要があります。COMPATIBLEパラメータが12.1.0以下の値に設定されている場合、上限は30バイトです。

新しいファンクションORA_MAX_NAME_LEN_SUPPORTEDがこの制限をチェックするために採用されました。

EXEC DBMS_OUTPUT.PUT_LINE(ORA_MAX_NAME_LEN_SUPPORTED);
128

新しい定数ORA_MAX_NAME_LENは、名前の最大長を定義します。新しいサブタイプDBMS_IDおよびDBMS_QUOTED_IDは、SQL、PL/SQLおよびユーザーのオブジェクト内の識別子の長さを定義します。

関連項目:

PL/SQLのカバレッジ・プラグマ

COVERAGEプラグマは、テストできないPL/SQLコードをカバレッジ用にマークします。

このマークは、カバレッジ・メトリック分析の精度を高めます。構文およびセマンティクスの詳細は、COVERAGEプラグマを参照してください。

関連項目:

PL/SQLの非推奨化プラグマ

DEPRECATEプラグマは、PL/SQLのプログラム要素を非推奨としてマークします。

コンパイラの警告は非推奨要素のユーザーに対して、非推奨化が原因で他のコードの変更が必要になる可能性があることを示します。

構文およびセマンティクスの詳細は、DEPRECATEプラグマを参照してください。

メタデータリンク・アプリケーション共通オブジェクトの共有

メタデータ・リンクを使用すると、アプリケーション・プラガブル・データベース(PDB)のデータベース・オブジェクトと、アプリケーション・ルートのオブジェクトとの間でメタデータを共有できます。

PDBとアプリケーション・ルートとの間でストアドPL/SQLユニットを共有する方法を指定するために、SHARING句が新たに採用されました。メタデータ・リンクは、同様に定義されたオブジェクト用に、オブジェクトのメタデータ(PL/SQLパッケージのソース・コードなど)のコピーを1つのみ格納して、ディスクおよびメモリー要件を軽減できるため有用です。これにより、このメタデータへの変更は1つの場所(アプリケーション・ルート)で行われるため、アップグレード処理のパフォーマンスが向上します。構文およびセマンティクスの詳細は、SHARING句を参照してください。

従来のDMLによるHybrid列圧縮(HCC)のサポート

PL/SQLでの配列の挿入中にHCCを使用できます。

HCCを構成する方法の詳細は、Oracle Database管理者ガイドを参照してください

非推奨となった機能

次の機能は今回のリリースで非推奨となり、今後のリリースではサポートされない可能性があります。

コマンド ALTER TYPE ... INVALIDATEは非推奨となりました。かわりにCASCADE句を使用してください。

ALTER TYPEREPLACE句は非推奨となりました。かわりにalter_method_spec句を使用してください。または、CREATE OR REPLACE TYPE文を使用して型を再作成することもできます。

構文およびセマンティクスの詳細は、ALTER TYPE文を参照してください

サポート対象外機能

このドキュメントで以前に記述されていた機能の一部は、Oracle Database 12cリリース2 (12.2)ではサポートされません。

  • サーバー側SQLJの非サポート

    クライアント側SQLJを使用してサポートされます。ただし、サーバー側SQLJの使用はサポートされません。これには、データベース環境でのストアド・プロシージャ、型、ファンクションおよびトリガーの実行が含まれます。

関連項目: