2.187 JSON_BEHAVIOR

JSON_BEHAVIORを使用すると、特定のSQL/JSON関数および条件について、セッション・レベルで様々なデフォルトの動作を指定できます。

特性 説明

パラメータ・タイプ

文字列

構文

JSON_BEHAVIOR = "flag:value[;flag:value]..."

二重引用符の中にスペースを含めることはできません。

デフォルト値

なし

変更可能

ALTER SESSION

PDBで変更可能

いいえ

基本

いいえ

このパラメータを使用すると、特定のSQL/JSON関数および条件について、セッション中のデフォルトの戻りデータ型、デフォルトの型互換性およびデフォルトのエラー動作を変更できます。これにより、一貫性のあるセッション・レベルのJSON処理動作が実施され、個々のSQL文内でデフォルトの動作を明示的にオーバーライドする必要がなくなります。

たとえば、JSON_QUERY関数ではデータを比較するときにデフォルトでlax型互換性が使用されます。このパラメータを使用すると、セッション内のすべてのJSON_QUERY関数の呼出しで厳密な型互換性がデフォルトで使用されるように指定できます。

次の1つ以上のフラグを任意の順序で指定できます:

  • JSON_QUERY_RET_VARCHAR

    値: TRUEまたはFALSE (デフォルト)

    RETURNING data_type句を省略した場合のJSON_QUERY関数のデフォルトの戻りデータ型を指定します。

    このフラグをTRUEに設定すると、JSON_QUERY関数の戻りデータ型は、入力データ型に関係なくVARCHAR2(4000)になります。

    デフォルト値のFALSEの場合、JSON_QUERY関数は戻りデータ型に入力のデータ型を使用します。

  • LAX_JSON_EXISTS

    値: TRUE (デフォルト)またはFALSE

    TYPE(STRICT|LAX)句を省略した場合のJSON_EXISTS条件のデフォルトの型互換性を指定します。

    このフラグをFALSEに設定すると、JSON_EXISTS条件は、TYPE(STRICT)構文で実行されたかのように動作します。つまり、配列内の値の検索時に、配列値が検索値のデータ型と一致しない場合、条件はON ERROR句で指定されたとおりに動作します。

    デフォルト値のTRUEの場合、JSON_EXISTS条件はデフォルトのTYPE(LAX)構文で実行されたかのように動作し、必要に応じて配列値を検索値のデータ型に変換しようとします。

  • LAX_JSON_QUERY

    値: TRUE (デフォルト)またはFALSE

    TYPE(STRICT|LAX)句を省略した場合のJSON_QUERY関数のデフォルトの型互換性を指定します。

    このフラグをFALSEに設定すると、JSON_QUERY関数はTYPE(STRICT)構文で実行されたかのように動作します。つまり、配列内の値の検索時に、配列値が検索値のデータ型と一致しない場合、関数はON ERROR句で指定されたとおりに動作します。

    デフォルト値のTRUEの場合、JSON_QUERY関数はデフォルトのTYPE(LAX)構文で実行されたかのように動作し、必要に応じて配列値を検索値のデータ型に変換しようとします。

  • LAX_JSON_TABLE

    値: TRUE (デフォルト)またはFALSE

    TYPE(STRICT|LAX)句を省略した場合のJSON_TABLE関数のデフォルトの型互換性を指定します。

    このフラグをFALSEに設定すると、JSON_TABLE関数はTYPE(STRICT)構文で実行されたかのように動作します。つまり、関数の選択したキーの値が指定された戻りデータ型でない場合、関数はON ERROR句で指定されたとおりに動作します。

    デフォルト値のTRUEの場合、JSON_TABLE関数はデフォルトのTYPE(LAX)構文で実行されたかのように動作し、必要に応じて、選択したキーを指定した戻りデータ型に変換しようとします。

  • LAX_JSON_VALUE

    値: TRUE (デフォルト)またはFALSE

    TYPE(STRICT|LAX)句を省略した場合のJSON_VALUE関数のデフォルトの型互換性を指定します。

    このフラグをFALSEに設定すると、JSON_VALUE関数はTYPE(STRICT)構文で実行されたかのように動作します。つまり、この関数の戻り値が指定された戻りデータ型ではない場合、関数はON ERROR句で指定されたとおりに動作します。

    デフォルト値のTRUEの場合、JSON_VALUE関数はデフォルトのTYPE(LAX)構文で実行されたかのように動作し、必要に応じて戻り値を指定された戻りデータ型に変換しようとします。

  • ON_ERROR

    値: ERRORまたはNULL (デフォルト)

    ON ERROR句を省略した場合の関数JSON_QUERYJSON_TABLE (EXISTS句なし)およびJSON_VALUEのデフォルト動作を指定します。デフォルトでは、これらの関数はエラーが発生した場合にnull値を返すため、無効な問合せを識別することが困難になる可能性があります。

    このフラグをERRORに設定すると、これらの関数は無効な問合せのエラーを返します。

    デフォルト値のNULLの場合、エラーが発生した場合にこれらの関数はNULL値を返します。

ALTER SESSION SET JSON_BEHAVIOR = "ON_ERROR:ERROR";

ALTER SESSION SET JSON_BEHAVIOR = "LAX_JSON_QUERY:FALSE;LAX_JSON_TABLE:FALSE;LAX_JSON_VALUE:FALSE";

ノート:

このパラメータは、Oracle Database 23ai以降で使用できます。

関連項目:

JSON_QUERYJSON_TABLEおよびJSON_VALUE関数およびJSON_EXISTS条件の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。