21.16 GET_VALUEファンクション

このファンクションはt_valueを戻します。

構文

APEX_JSON.GET_VALUE (
    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_value;

パラメータ

表21-15 GET_VALUEファンクションのパラメータ

パラメータ 説明

p_path

p_valuesへの索引。

p[0-4]

p_pathの各%NをpNで置き換え、i-th %sまたは%dをすべてp[i-1]で置き換えます。

p_values

解析されたJSONメンバー。デフォルトは、g_valuesです。

戻り値/発生するエラー

表21-16 GET_VALUEファンクションの戻り値および発生するエラー

戻り値 説明

t_value

指定されたパスの位置にあるt_value。データが見つからない場合、レコード属性はnullです。

VALUE_ERROR

p_values(p_path)が配列またはオブジェクトではない場合、このエラーが発生します。

この例では、JSON文字列を解析し、位置にある値の属性を出力します。

DECLARE
    j apex_json.t_values; 
    v apex_json.t_value; 
BEGIN 
    apex_json.parse(j, '{ "foo": 3, "bar": [1, 2, 3, 4] }'); 
    v := apex_json.get_value(p_path=>'bar[%d]',p0=> 2,p_values=>j); -- returns the t_value for bar[2] 
    dbms_output.put_line(v.number_value); -- 2 
    v := apex_json.get_value(p_path=>'does.not.exist',p_values=>j); 
    dbms_output.put_line(case when v.kind is null then 'not found!' end); 
END;