21.6 DOES_EXISTファンクション

このファンクションは、指定されたパスが既存の値を指しているかどうかを判別します。

構文

APEX_JSON.DOES_EXIST (
   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 BOOLEAN;

パラメータ

表21-1 DOES_EXISTファンクションのパラメータ

パラメータ 説明

p_path

p_valuesへの索引。

p[0-4]

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

p_values

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

戻り値

表21-2 DOES_EXISTファンクションの戻り値

戻り値 説明

TRUE

指定されたパスは既存の値を指しています。

FALSE

指定されたパスは既存の値を指していません

この例では、JSON文字列を解析し、パス下の値が含まれているかどうかを出力します。

DECLARE 
    j apex_json.t_values; 
BEGIN 
    apex_json.parse(j, '{ "items": [ 1, 2, { "foo": true } ] }'); 
    if apex_json.does_exist(p_path => 'items[%d].foo', p0 => 3, p_values => 
j) then 
        dbms_output.put_line('found items[3].foo'); 
    end if; 
END;