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
リスト、WHERE
、GROUP BY
およびHAVING
句で一般に使用されるスカラー式にすることも、多相(パラメータ化された)ビューのような役割を果たすためにFROM
で一般に使用される表式にすることもできます。
SQLマクロにより、開発者の生産性が高まり、コラボレーション開発が簡略化され、コード品質が向上します。
関連項目:
- 構文およびセマンティクスの詳細は、CREATE FUNCTION文を参照してください
- SQL_MACRO句の構文およびセマンティクス
1.1.4 新しいJSONデータ型
JSONは、JSONデータ用のSQLおよびPL/SQLの新しいデータ型です。データは、ネストしたJSON値への高速アクセスのためにバイナリ形式でデータベースに格納されます。
- 表やビューDDLの列の型として
- PL/SQLサブプログラムのパラメータの型として
- SQL/JSONファンクションまたは条件が使用可能なあらゆる式で
いくつかの制限が適用されます。
関連項目:
-
詳細は、PL/SQL式でのSQLファンクションを参照してください
1.1.5 新しいプラグマSUPPRESSES_WARNING_6009
SUPPRESSES_WARNING_6009
プラグマを使用すると、エラー処理がさらに強固なものになり、より適切なカプセル化とモジュール化が可能になります。
PL/SQLコンパイラは、あらゆる状況でOTHERS
例外ハンドラが明示的なRAISE
文またはPL/SQL提供のプロシージャRAISE_APPLICATION_ERROR
の呼び出しで終了していないと判断した場合に、警告PLW-06009
を発行します。このコンパイラの動作は、プログラマが独自のレポート・サブルーチンを用意しているときに、プログラミング・スタイルによっては過剰になることがあります。この新しいプラグマにより、その警告を抑止できます。
関連項目:
- プラグマの詳細は、プラグマを参照してください
- 構文およびセマンティクスの詳細は、SUPPRESSES_WARNING_6009プラグマを参照してください
1.1.6 永続不可ユーザー定義タイプのPL/SQLタイプ属性
永続不可のオブジェクトで、BOOLEANやPLS_INTEGERなどのPL/SQLスカラー・データ型の属性を使用できます。
永続不可型のインスタンスは、ディスク上で保持することはできません。
そのようなタイプのインスタンスが永続しないようにするために、PL/SQLコードで永続不可オブジェクト型を使用できます。これは、Oracleのオブジェクト指向プログラミング・モデルに従ってプログラム開発をする際に役立ちます。
関連項目:
-
構文およびセマンティクスの詳細は、
CREATE
TYPE
文の[NOT] PERSISTABLE句を参照してください。
1.2 非推奨となった機能
次の機能は非推奨であり、将来のリリースではサポートされなくなる可能性があります。
コマンド ALTER TYPE
... INVALIDATE
は非推奨となりました。かわりにCASCADE
句を使用してください。
ALTER TYPE
のREPLACE
句は非推奨となりました。かわりにalter_method_spec
句を使用してください。または、CREATE OR REPLACE TYPE
文を使用して型を再作成することもできます。
Oracle Databaseの12cリリース1(12.1)以降、コンパイル・パラメータPLSQL_DEBUGは非推奨となります。
PL/SQLユニットをデバッグ用にコンパイルするには、PLSQL_OPTIMIZE_LEVEL=1を指定します。
コンパイル・パラメータの詳細は、PL/SQLユニットおよびコンパイル・パラメータを参照してください。
1.3 サポート対象外となった機能
20cでサポート対象外になったPL/SQL言語リファレンスの機能はありません。
関連項目:
- Oracle Database20cのサポート対象外機能の詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください