2.3 JSONに対するOracle Databaseのサポート

JavaScript Object Notation (JSON)に対するOracle Databaseのサポートは、リレーショナル記憶域の使用範囲とJSONデータの問合せの使用範囲のベスト・フィットを実現することにより、リレーショナル問合せとJSON問合せを互いに連携して機能させることを目指しています。Oracle SQL/JSONサポートは、SQL標準のJSONサポートと密接に連携しています。

Oracle Databaseは、ECMAScript第5.1版で指定されたJSON形式をサポートしています。

関連項目:

2.3.1 RFC 8259のサポート: JSONスカラー

リリース21c以降のOracle DatabaseではIETF RFC 8259がサポートされており、これにより、JSON文書の最上位レベルに、単なるオブジェクトまたは配列ではなく、JSONスカラー値を含めることができます。このサポートは、JSONデータを返すファンクションはスカラーJSON値を返すこともできることを意味します。

これをサポートするには、データベース初期化パラメータcompatible20以上である必要があります。

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スカラーを返すことができます。

パラメータcompatible20以上の場合は、SQLデータ型JSON、そのコンストラクタJSONおよびSQL/JSONファンクションjson_scalarも使用できます。compatible20より低位にある場合、それらの使用を試みるとエラーが発生します。

compatible20以上の場合は、キーワードDISALLOW SCALARSを使用することにより、一部のJSONデータで最上位レベルのスカラーが許可されないように制限できます。たとえば、DISALLOW SCALARSを指定したis jsonのチェック制約を使用すると、最上位レベルのスカラーJSON値を持つ文書の挿入を防ぐことができます。

警告:

compatibleパラメータの値を20以上に変更した場合、後で低い値に戻すことはできません。