37.21 GET_VALUE_KINDファンクション

このファンクションは、パスの位置にある値の種類を戻します。

構文

APEX_JSON.GET_VALUE_KIND (
    p_path             IN VARCHAR2,
    p0                 IN VARCHAR2 DEFAULT NULL,
    p1                 IN VARCHAR2 DEFAULT NULL,
    p2                 IN VARCHAR2 DEFAULT NULL,
    p3                 IN VARCHAR2 DEFAULT NULL,
    p4                 IN VARCHAR2 DEFAULT NULL,
    p_values           IN t_values DEFAULT g_values )
    RETURN t_kind;

パラメータ

パラメータ 説明
p_values 解析されたJSONメンバー。デフォルトはg_valuesです。
p_path p_valuesへの索引。
p[0-4] p_path%NはそれぞれpNに置換され、i-th %sまたは%dはそれぞれp[i-1]に置換されます。

表37-1 戻り値

戻り値 説明
t_kind 指定されたパスの位置にある値のt_kind。データが見つからない場合は、NULLを戻します。

この例では、JSON文字列を分析し、属性の種類を出力します。

DECLARE
    j apex_json.t_values;
    k apex_json.t_kind;

    PROCEDURE print_kind( p_kind in apex_json.t_kind ) IS
    BEGIN
        dbms_output.put_line( 
            CASE p_kind
                WHEN apex_json.c_null      THEN 'NULL'
                WHEN apex_json.c_true      THEN 'true'
                WHEN apex_json.c_false     THEN 'false'
                WHEN apex_json.c_number    THEN 'NUMBER'
                WHEN apex_json.c_varchar2  THEN 'VARCHAR2'
                WHEN apex_json.c_object    THEN 'OBJECT'
                WHEN apex_json.c_array     THEN 'ARRAY'
                WHEN apex_json.c_clob      THEN 'CLOB' end );
    END print_kind;
BEGIN
    apex_json.parse(j, '{ "foo": 3, "bar": [1, 2, 3, 4] }');
    k := apex_json.get_value_kind (
             p_values => j,
             p_path   => 'bar[%d]',
             p0       => 2); -- returns the t_value for bar[2]
    print_kind(k);      -- 'NUMBER'
    k := apex_json.get_value_kind (
             p_values => j,
             p_path   => 'bar');
    print_kind(k);      -- 'ARRAY'
END;