101 DBMS_JSON_SCHEMA

DBMS_JSON_SCHEMAパッケージでは、Oracle Databaseに格納されているJavaScript Object Notation (JSON)スキーマの検証と生成のためのサブプログラムが提供されます。

この章のトピックは、次のとおりです:

101.1 DBMS_JSON_SCHEMAのセキュリティ・モデル

DBMS_JSON_SCHEMAパッケージはSYSアカウントが所有しています。

PUBLICアカウントには、DBMS_JSON_SCHEMAパッケージに対するEXECUTE権限が付与されます。

DBMS_JSON_SCHEMAパッケージは、AUTHID CURRENT_USER句で定義します。

DBMS_JSON_SCHEMA.DESCRIBE()ファンクションを呼び出すユーザーには、記述されているオブジェクトに対する十分な権限が必要です。

101.2 DBMS_JSON_SCHEMAの定数

DBMS_JSON_SCHEMAパッケージでは、スキーマ検証に次の定数が使用されます。

表101-1スキーマ検証のためのDBMS_JSON_SCHEMAの定数

名前 説明
RAISE_ERROR 1 無効なスキーマの場合にはエラーが発生します。
RAISE_NONE 0 無効なスキーマの場合でもエラーは発生しません。
SCHEMA_INVALID 0 スキーマは無効です。
SCHEMA_VALID 1 スキーマは有効です。

101.3 DBMS_JSON_SCHEMAサブプログラムの要約

この表は、DBMS_JSON_SCHEMAのサブプログラムを示し、簡単に説明しています。

DBMS_JSON_SCHEMAパッケージのサブプログラム

サブプログラム 説明
DESCRIBEファンクション 指定されたオブジェクト(表、ビュー、オブジェクト・タイプ。あるいは、表、ビュー、二面性ビュー、オブジェクト・タイプ、コレクション・タイプまたはドメインに解決されるシノニム)からスキーマを作成します。
IS_SCHEMA_VALIDファンクション JSONスキーマの有効性をチェックします。
IS_VALIDファンクション 指定されたスキーマのJSONデータの有効性をチェックします(ファンクション)。
IS_VALIDプロシージャ 指定されたスキーマのJSONデータの有効性をチェックします(プロシージャ)。
VALIDATE_REPORTファンクション スキーマ検証の結果からのエラー・レポートを読み取ります。

101.3.1 DESCRIBEファンクション

このプロシージャは、指定されたオブジェクトからスキーマを作成します。

構文

FUNCTION DESCRIBE(
   object_name IN VARCHAR2,
   owner_name  IN VARCHAR2  DEFAULT NULL,
   column_name IN VARCHAR2  DEFAULT NULL)
RETURN JSON;

パラメータ

表101-2 DESCRIBEファンクションのパラメータ

パラメータ 説明
object_name スキーマの作成に使用するオブジェクト。指定できるオブジェクトは、表、ビュー、オブジェクト・タイプか、表、ビュー、二面性ビュー、オブジェクト・タイプ、コレクション・タイプまたはドメインに解決されるシノニムです。
owner_name スキーマを作成するユーザーの名前。owner_nameの値がNULLの場合、表は現行ユーザーのスキーマ内に作成されます。
column_name 列名が指定された場合は、表内またはビュー内のその列のみについてスキーマが返されます。column_name引数は、表またはビュー・オブジェクトでのみ使用できます。

101.3.2 IS_SCHEMA_VALIDファンクション

このファンクションは、スキーマの有効性をチェックします。

構文

FUNCTION IS_SCHEMA_VALID(
   json_data   IN   JSON)
RETURN PLS_INTEGER;

パラメータ

表101-3 DESCRIBEファンクションのパラメータ

パラメータ 説明
json_data 有効性をチェックするスキーマ。

このファンクションは、スキーマが有効でない場合は0を返します。

101.3.3 IS_VALIDファンクション

このファンクションは、指定されたスキーマについてJSONデータの有効性をチェックします。

構文

FUNCTION IS_VALID(
   json_data   IN   JSON,
   json_schema IN   JSON,
   raise_err   IN   PLS_INTEGER
   DEFAULT DBMS_JSON_SCHEMA.RAISE_NONE)
RETURN PLS_INTEGER;

パラメータ

表101-4 IS_VALIDファンクションのパラメータ

パラメータ 説明
json_data 検証するJSONデータ。
json_schema データの検証に使用するスキーマ。
raise_err
  • RAISE_NONE - 無効なスキーマの場合でもエラーは発生しません。
  • RAISE_ERROR - 無効なスキーマの場合にはエラーが発生します。

スキーマが有効な場合は、SCHEMA_VALID定数1が返されます。スキーマが有効でない場合は、raise_err値がRAISE_ERRORである場合(その場合はエラーが発生する)を除き、SCHEMA_INVALID定数0が返されます。

101.3.4 IS_VALIDプロシージャ

このプロシージャは、指定されたスキーマについてJSONデータの有効性をチェックします。

構文

PROCEDURE IS_VALID(
   json_data   IN  JSON,
   json_schema IN  JSON,
   result      OUT BOOLEAN,
   errors      OUT JSON);

パラメータ

表101-5 IS_VALIDプロシージャのパラメータ

パラメータ 説明
json_data 検証するJSONデータ。
json_schema データの検証に使用するスキーマ。
result 検証の結果。JSONデータが有効な場合はTRUE、そうでない場合はFALSEです。
errors 指定されたスキーマに対する検証時にJSONデータを無効とみなした理由を示すエラー・メッセージのリスト。

101.3.5 VALIDATE_REPORTファンクション

このファンクションは、スキーマ検証の結果からのエラー・レポートを読み取ります。

構文

FUNCTION VALIDATE_REPORT(
   json_data   IN   VARCHAR2,
   json_schema IN   VARCHAR2)
RETURN JSON;

パラメータ

表101-6 VALIDATE_REPORTファンクションのパラメータ

パラメータ 説明
json_data 検証するJSONデータ。
json_schema データの検証に使用するスキーマ。