是否可以根据变量动态定义 JSON_QUERY 中的路径表达式?

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 的串联导致错误:



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

提前致谢!

最佳答案

您可以使用 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;

关于JSON_QUERY : Path expression based on variables?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38294462/

10-13 06:04