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
句のコンパイル・セマンティクスが修正されました。
関連項目:
-
PL/SQLユニットに対するデータバインドされた照合の指定の詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください
-
有効なスキーマのデフォルトの照合の詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください
リモート・プロシージャの定義者権限の制御
アプリケーションでデータベース・リンクおよび定義者権限プロシージャを使用する場合、ユーザーによる定義者権限プロシージャの実行時に権限を付与する方法を制御できます。
新しい権限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の事前定義のデータ型を参照してください
-
PL/SQLのプログラム上の制限に関する一般的な情報は、PL/SQLのプログラム上の制限を参照してください
-
データベース・オブジェクトのネーミング規則の詳細は、Oracle Database SQL言語リファレンスを参照してください
PL/SQLのカバレッジ・プラグマ
COVERAGE
プラグマは、テストできないPL/SQLコードをカバレッジ用にマークします。
このマークは、カバレッジ・メトリック分析の精度を高めます。構文およびセマンティクスの詳細は、COVERAGEプラグマを参照してください。
関連項目:
-
PL/SQL基本ブロック・コード・カバレッジを使用した品質維持の詳細は、Oracle Database開発ガイドを参照してください
-
DBMS_PLSQL_CODE_COVERAGE
パッケージの詳細は、Oracle PL/SQLパッケージおよびタイプ・リファレンスを参照してください
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 TYPE
のREPLACE
句は非推奨となりました。かわりにalter_method_spec
句を使用してください。または、CREATE OR REPLACE TYPE
文を使用して型を再作成することもできます。
サポート対象外機能
このドキュメントで以前に記述されていた機能の一部は、Oracle Database 12cリリース2 (12.2)ではサポートされません。
-
サーバー側SQLJの非サポート
クライアント側SQLJを使用してサポートされます。ただし、サーバー側SQLJの使用はサポートされません。これには、データベース環境でのストアド・プロシージャ、型、ファンクションおよびトリガーの実行が含まれます。
関連項目:
- サポート対象外機能のリストについては、Oracle Databaseアップグレード・ガイドを参照してください