JSON_查询:基于变量的路径表达式?

JSON_查询:基于变量的路径表达式?,json,oracle,Json,Oracle,是否可以基于变量在JSON_查询中动态定义路径表达式 DECLARE varpath varchar(180):= 'testvar1.testattribute'; BEGIN SELECT (JSON_QUERY(json_field FORMAT JSON , '$.' || varpath RETURNING VARCHAR2(4000) ASIS WITHOUT ARRAY WRAPPER NULL ON ERROR)) FROM example1; END; “

是否可以基于变量在JSON_查询中动态定义路径表达式

DECLARE
    varpath varchar(180):= 'testvar1.testattribute';
BEGIN
    SELECT (JSON_QUERY(json_field FORMAT JSON , '$.' || varpath RETURNING VARCHAR2(4000) ASIS  WITHOUT ARRAY WRAPPER NULL ON ERROR)) FROM example1; 
END;
“$.”| | varpath
的串联导致错误:

PL/SQL:ORA-40454:路径表达式不是文本

有没有办法做到这一点?在我的用例中,我需要从其他表中动态获取路径,这就是我构建这个简短测试脚本的原因


提前谢谢

您可以使用EXECUTE IMMEDIATE来解决它

DECLARE
    varpath varchar2(180):= 'testvar1.testattribute';
    v_query_str varchar2(4000);
    v_result varchar2(4000);
BEGIN
    v_query_str := 'SELECT JSON_QUERY(json_field FORMAT JSON , ''$.' || varpath || ''' RETURNING VARCHAR2(4000) ASIS  WITHOUT ARRAY WRAPPER NULL ON ERROR) FROM example1'; 
    EXECUTE IMMEDIATE v_query_str INTO v_result;
END;