2.3 JSONに対するOracle Databaseのサポート
JavaScript Object Notation (JSON)に対するOracle Databaseのサポートは、リレーショナル記憶域の使用範囲とJSONデータの問合せの使用範囲のベスト・フィットを実現することにより、リレーショナル問合せとJSON問合せを互いに連携して機能させることを目指しています。Oracle SQL/JSONサポートは、SQL標準のJSONサポートと密接に連携しています。
Oracle Databaseは、ECMAScript第5.1版で指定されたJSON形式をサポートしています。
関連項目:
-
ISO/IEC 9075-2:2023, Information technology—Database language SQL—Part 2: Foundation (SQL/Foundation)
-
ISO/IEC TR 19075-6:2021, Information technology — Guidance for the use of database language SQL, Part 6: Support for JSON
-
『Oracle Database SQL言語リファレンス』の「Oracleと標準SQL」
-
ECMAScript言語仕様(JavaScript)の場合は、ECMA 262およびECMA 262第5.1版
- RFC 8259のサポート: JSONスカラー
リリース21c以降のOracle DatabaseではIETF RFC 8259がサポートされており、これにより、JSON文書の最上位レベルに、単なるオブジェクトまたは配列ではなく、JSONスカラー値を含めることができます。このサポートは、JSONデータを返すファンクションはスカラーJSON値を返すこともできることを意味します。
親トピック: Oracle DatabaseのJSON
2.3.1 RFC 8259のサポート: JSONスカラー
リリース21c以降のOracle DatabaseではIETF RFC 8259がサポートされており、これにより、JSON文書の最上位レベルに、単なるオブジェクトまたは配列ではなく、JSONスカラー値を含めることができます。このサポートは、JSONデータを返すファンクションはスカラーJSON値を返すこともできることを意味します。
これをサポートするには、データベース初期化パラメータcompatibleが20以上である必要があります。
21cより前のデータベース・リリースでは、IETF RFC 4627のみがサポートされていました。これにより、JSON文書の最上位レベルに、スカラーではなくJSONオブジェクトまたは配列のみを含めることができます。RFC 8259のサポートには、RFC 4627のサポート(およびRFC 7159のサポート)が含まれています。
compatibleパラメータが20以上の場合は、JSONデータの格納方法(JSON型またはテキスト形式)にかかわらず、デフォルトでRFC 8259がサポートされます。ただし、新しいis jsonのキーワードDISALLOW SCALARSを指定して、特定のJSON列に対してis jsonチェック制約を使用すると、最上位レベルのJSONスカラーがある文書の挿入を除外できます(つまり、RFC 8259ではなくRFC 4627のみをサポートします)。
compatibleパラメータが20以上の場合、SQL/JSONファンクションjson_query (または、json_queryのセマンティクスを持つjson_tableの列)にキーワードDISALLOW SCALARSを使用すると、戻り値がJSONオブジェクトまたは配列である必要があることを指定できます。これらのキーワードを指定しない場合は、JSONスカラーを返すことができます。
パラメータcompatibleが20以上の場合は、SQLデータ型JSON、そのコンストラクタJSONおよびSQL/JSONファンクションjson_scalarも使用できます。compatibleが20より低位にある場合、それらの使用を試みるとエラーが発生します。
compatibleが20以上の場合は、キーワードDISALLOW SCALARSを使用することにより、一部のJSONデータで最上位レベルのスカラーが許可されないように制限できます。たとえば、DISALLOW SCALARSを指定したis jsonのチェック制約を使用すると、最上位レベルのスカラーJSON値を持つ文書の挿入を防ぐことができます。
警告:
compatibleパラメータの値を20以上に変更した場合、後で低い値に戻すことはできません。
親トピック: JSONに対するOracle Databaseのサポート