JSON_OBJECTAGG
JSON_on_null_clause::=
目的
SQL/JSONファンクションJSON_OBJECTAGGは集計ファンクションです。これは、その入力として、プロパティのキーと値のペアを取得します。通常、プロパティ・キー、プロパティ値またはその両方はSQL式の列です。このファンクションは、キーと値のペアごとのオブジェクト・メンバーを構成し、それらのオブジェクト・メンバーを含む単一のJSONオブジェクトを戻します。
                  
[KEY] string VALUE expr
この句を使用して、プロパティのキーと値のペアを指定します。
- 
                        
KEYはオプションで、セマンティクスを明確にするために使用されます。 - 
                        
stringを使用して、大/小文字を区別するテキスト・リテラルとしてプロパティ・キー名を指定します。 - 
                        
exprを使用して、プロパティ値を指定します。exprには、SQL数値リテラル、テキスト・リテラル、日付、タイムスタンプのいずれかに評価される任意の式を指定できます。日付およびタイムスタンプのデータ型は、生成されるJSONオブジェクトまたは配列に、ISO8601日付書式に従ったJSON文字列として出力されます。exprが数値リテラルと評価される場合は結果のプロパティ値がJSON数値になり、そうでない場合は結果のプロパティ値が二重引用符で囲まれた大/小文字を区別するJSON文字列値になります。 
FORMAT JSON
このオプション句を使用すると、入力文字列がJSONであることを示すため、出力で引用符に囲まれません。
JSON_on_null_clause
この句を使用して、exprがNULLと評価される場合のこのファンクションの動作を指定します。
                  
- 
                        
NULLONNULL: NULL ON NULLが指定されている場合は、JSON NULL値は、指定したキーの値として使用されます。 - 
                        
ABSENTONNULL- この句を指定した場合は、JSONオブジェクトからプロパティのキーと値のペアが省略されます。 
JSON_returning_clause
この句を使用して、このファンクションで戻される文字列のデータ型を指定します。次のデータ型を指定できます。
- 
                        
VARCHAR2[(size[BYTE,CHAR])]SQLで
VARCHAR2データ型を指定する場合、サイズを指定する必要があります。ただし、この句はサイズを省略できます。 - 
                        
シングルバイト文字またはマルチバイト・キャラクタを含むキャラクタ・ラージ・オブジェクトを戻す
CLOB。 - 
                        
AL32UTF8文字セットのバイナリ・ラージ・オブジェクトを戻すBLOB。 - 
                        
JSONデータを戻す
JSON。JSONデータ型を使用するには、データベース初期化パラメータcompatibleを20以上に設定する必要があります。 
この句を省略するか、VARCHAR2を指定してsize値を省略した場合、JSON_OBJECTAGGはVARCHAR2(4000)型の文字列を戻します。
                  
前述のデータ型の詳細は、「データ型」を参照してください。
STRICT
STRICT句を指定して、JSON生成ファンクションの出力が正しいJSONであることを確認します。チェックに失敗すると、構文エラーが発生します。
                  
例については、JSON_OBJECTを参照してください。
WITH UNIQUE KEYS
WITH UNIQUE KEYSを指定すると、生成されたJSONオブジェクトが一意キーを持つことが保証されます。
                  
例
次の例では、メンバーに部門名と部門番号が含まれるJSONオブジェクトを構成します。
SELECT JSON_OBJECTAGG(KEY department_name VALUE department_id) "Department Numbers"
  FROM departments
  WHERE department_id <= 30;
Department Numbers
----------------------------------------------------
{"Administration":10,"Marketing":20,"Purchasing":30}

