1 『Oracle Database PL/SQL言語リファレンス』のこのリリースの変更点

1.1 Oracle Database PL/SQL言語リファレンスのリリース20cの新機能

Oracle Databaseの20cのOracle Database PL/SQL言語リファレンスでは、次の新機能と拡張機能について説明します。

関連項目:

Oracle Databaseリリース20cの新機能すべての詳細は、Oracle Database新機能ガイドを参照してください

1.1.1 PL/SQL拡張イテレータ

PL/SQLプログラムでは、SQL問合せによって生成されたデータの行全体に及ぶビジネス・ロジックを実装するために、繰返しコントロールを使用します。

反復は、PL/SQLの基本的な構成ブロックです。PL/SQLでは、ループ内および修飾式内で新しいイテレータを使用することで、繰返しコントロールのプログラミングが向上しています。このイテレータは、明快簡潔で、理解しやすく効率的なものです。

使用可能な繰返しコントロールは次のとおりです。

  • ステップ範囲の繰返しコントロール
  • 単一式の繰返しコントロール
  • コレクションの繰返しコントロール
  • カーソルの繰返しコントロール

複数の繰返しコントロールを連鎖することもできます。

新しい停止述語句とスキップ述語句が追加されました。

イテランドの新しい可変性プロパティにより、ループ本体での代入を可能にするかどうかを決定します。

イテランドのタイプは、暗黙的または明示的に宣言できます。

関連項目:

  • 概念および例の詳細は、FOR LOOP文の概要を参照してください
  • 構文およびセマンティクスの詳細は、FOR LOOP文を参照してください

1.1.2 PL/SQL修飾式の機能拡張

集計およびそれらに必要な付加詞である修飾式によって、プログラムが明確になりプログラマの生産性が向上します。

Oracle Databaseリリース18cからは、コンストラクタが抽象データ型の値を提供するのと同じように、どんなPL/SQL値も(たとえばレコードや連想配列用に)式を使用して提供できます。PL/SQLでは"修飾式"および"集計"と呼び、SQL用語では"型コンストラクタ"と呼びますが、両者の機能は同じです。

Oracle Database Release 20c以降には、修飾式で使用するための3つの新しいイテレータ選択アソシエーションのタイプが追加されています。基本イテレータ選択アソシエーションは、完全イテレータを索引として使用できるようにすることで、現行のイテレータ選択アソシエーションを拡張します。索引イテレータ選択アソシエーションは、値式と連動する索引式を実現します。シーケンス・イテレータ選択アソシエーションを使用すると、値のシーケンスをコレクションの末尾に追加できます。どの場合でも、指定する式でイテランドを参照することがあります。

関連項目:

  • 詳細および例は、修飾式の概要を参照してください。
  • 構文およびセマンティクスの詳細は、修飾式を参照してください

1.1.3 SQLマクロ

SQLマクロ(SQM)を作成して、共通のSQL式および文を、他のSQL文で使用できる再利用可能なパラメータ化された構造体にくくり出すことができます。

SQLマクロは、計算とビジネス・ロジックをカプセル化するためにSELECTリスト、WHEREGROUP BYおよびHAVING句で一般に使用されるスカラー式にすることも、多相(パラメータ化された)ビューのような役割を果たすためにFROMで一般に使用される表式にすることもできます。

SQLマクロにより、開発者の生産性が高まり、コラボレーション開発が簡略化され、コード品質が向上します。

関連項目:

  • 構文およびセマンティクスの詳細は、CREATE FUNCTION文を参照してください
  • SQL_MACRO句構文およびセマンティクス

1.1.4 新しいJSONデータ型

JSONは、JSONデータ用のSQLおよびPL/SQLの新しいデータ型です。データは、ネストしたJSON値への高速アクセスのためにバイナリ形式でデータベースに格納されます。

JSONデータ型とそのインスタンスは、次のようなSQLデータ型が使用可能なほとんどの場所で使用できます。
  • 表やビューDDLの列の型として
  • PL/SQLサブプログラムのパラメータの型として
  • SQL/JSONファンクションまたは条件が使用可能なあらゆる式で

いくつかの制限が適用されます。

関連項目:

1.1.5 新しいプラグマSUPPRESSES_WARNING_6009

SUPPRESSES_WARNING_6009プラグマを使用すると、エラー処理がさらに強固なものになり、より適切なカプセル化とモジュール化が可能になります。

PL/SQLコンパイラは、あらゆる状況でOTHERS例外ハンドラが明示的なRAISE文またはPL/SQL提供のプロシージャRAISE_APPLICATION_ERRORの呼び出しで終了していないと判断した場合に、警告PLW-06009を発行します。このコンパイラの動作は、プログラマが独自のレポート・サブルーチンを用意しているときに、プログラミング・スタイルによっては過剰になることがあります。この新しいプラグマにより、その警告を抑止できます。

関連項目:

1.1.6 永続不可ユーザー定義タイプのPL/SQLタイプ属性

永続不可のオブジェクトで、BOOLEANやPLS_INTEGERなどのPL/SQLスカラー・データ型の属性を使用できます。

永続不可型のインスタンスは、ディスク上で保持することはできません。

そのようなタイプのインスタンスが永続しないようにするために、PL/SQLコードで永続不可オブジェクト型を使用できます。これは、Oracleのオブジェクト指向プログラミング・モデルに従ってプログラム開発をする際に役立ちます。

関連項目:

  • 構文およびセマンティクスの詳細は、CREATE TYPE文の[NOT] PERSISTABLE句を参照してください。

1.2 非推奨となった機能

次の機能は非推奨であり、将来のリリースではサポートされなくなる可能性があります。

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

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

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

Oracle Databaseの12cリリース1(12.1)以降、コンパイル・パラメータPLSQL_DEBUGは非推奨となります。

PL/SQLユニットをデバッグ用にコンパイルするには、PLSQL_OPTIMIZE_LEVEL=1を指定します。

コンパイル・パラメータの詳細は、PL/SQLユニットおよびコンパイル・パラメータを参照してください。

1.3 サポート対象外となった機能

20cでサポート対象外になったPL/SQL言語リファレンスの機能はありません。

関連項目: