2.13.3 JavaScript Object Notation (JSON)の既知の不具合

次に、Oracle Database 12cリリース2 (12.2)でのJavaScript Object Notation (JSON)の既知の不具合を示します。

2.13.3.1 Oracle Bug#25186856

JavaScript Object Notation (JSON)生成関数(たとえば、JSON_OBJECT、JSON_ARRAY、JSON_OBJECTAGGおよびJSON_ARRAYAGG)に対するLOB入力パラメータおよびLOB出力に、既知の問題があり、サポートされていません。

回避策:

かわりに、VARCHARパラメータを使用します。

2.13.3.2 Oracle Bug#24693010

JavaScript Object Notation (JSON)生成関数(JSON_OBJECT、JSON_ARRAY、JSON_OBJECTAGGおよびJSON_ARRAYAGG)が、次を含むいくつかの場合に間違ったJSON出力値を示すことがあります。

  • データベース文字セットがUTF8文字セットではありません。

  • 一部の文字列が適切にエスケープされていません。

回避策:

可能な場合は、JSON_OBJECTAGGの使用をVARCHAR2に、またはJSON_ARRAYAGGの使用をVARCHAR2の結果に制限し、CLOB出力を回避します。シングルバイトの文字セットを使用する場合のみ、CLOB出力を使用します。

JSON_OBJECTAGGまたはJSON_ARRAYAGGからの間違ったJSON出力を回避するには、結果を演算子に渡す前に、カスタムPL/SQL関数を使用してVARCHAR2列をエスケープします。エスケープ関数は二重引用符文字、バックスラッシュ文字および任意のASCII制御文字またはスペース以外の空白文字をエスケープする必要があります。

JSON_ARRAYまたはJSON_OBJECTをAL32UTF8以外の文字セットとともに使用しないようにします。

2.13.3.3 Oracle Bug#24490872

JavaScript Object Notation (JSON)集計関数JSON_OBJECTAGGおよびJSON_ARRAYAGGへの入力は、入力値ごとに4,000バイトに制限されています。それよりもバイト数の多い値ではエラー・メッセージが返されます。

回避策:

なし。

2.13.3.4 Oracle Bug#24469879

SQL条件JSON_EXISTSは、パス式の述部とともに使用できるようになりました。ただし、パス式の述部にはUnicodeエスケープ・シーケンスを含めることはできません。

回避策:

かわりに、データベース文字セット(たとえば、AL32UTF8)の文字を使用できます。データベース文字セットの文字を使用していない場合、述部は適切に評価されません。