37.7 FIND_PATHS_LIKEファンクション

このファンクションは、指定されたパターンに一致するp_valuesへのパスを戻します。

構文

APEX_JSON.FIND_PATHS_LIKE (
    p_return_path      IN VARCHAR2,
    p_subpath          IN VARCHAR2 DEFAULT NULL,
    p_value            IN VARCHAR2 DEFAULT NULL,
    p_values           IN t_values DEFAULT g_values )
RETURN apex_t_varchar2;

パラメータ

パラメータ 説明
p_return_path 戻りパスの検索パターン。
p_subpath (オプション) p_return_pathの下の検索パターン。
p_value (オプション)値の検索パターン。
p_values 解析されたJSONメンバー。デフォルトは、g_valuesです。

戻り値/発生するエラー

戻り値/エラー 説明
apex_t_varchar2 パターンに一致するパスの表。
VALUE_ERROR p_values(p_pathが配列またはオブジェクトではない場合、このエラーが発生します。

この例では、JSON文字列を解析し、パターンに一致するパスを検索し、パス下の値を出力します。

DECLARE
    j       apex_json.t_values;
    l_paths apex_t_varchar2;
BEGIN
    apex_json.parse(j, '{ "items": [ { "name": "Amulet of Yendor", "magical": true }, '||
                                     { "name": "Slippers",  "magical": "rather not" } ]}');
    l_paths := apex_json.find_paths_like (
        p_values      => j,
        p_return_path => 'items[%]',
        p_subpath     => '.magical',
        p_value       => 'true' );
    dbms_output.put_line('Magical items:');
    FOR i in 1 .. l_paths.count LOOP
        dbms_output.put_line(apex_json.get_varchar2(p_values => j, p_path => l_paths(i)||'.name')); 
    END LOOP;
END;