是否可以根据变量动态定义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
的串联会导致错误:
PL / SQL:ORA-40454:路径表达式不是文字。
有没有办法实现这个目标?在我的用例中,我需要从其他表中动态获取路径,这就是我构建这个简短测试脚本的原因。
提前致谢!
答案 0 :(得分:1)
您可以使用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;