如何在PL/SQL游标中使用Oracle SQL/JSON?解决JSON_OBJECT绑定变量错误
解决Oracle 19C PL/SQL游标中JSON_OBJECT的"bad bind variable"错误
问题原因
你的SQL语句中用冒号(:)定义JSON_OBJECT的键值对,但在PL/SQL环境里,冒号是绑定变量的标识,解析器会把'Header':后面的JSON_OBJECT误认为是未定义的绑定变量,从而抛出"bad bind variable json_object"错误。
修复后的查询语句
把键值对里的冒号替换为Oracle JSON_OBJECT标准的VALUE关键字即可:
select JSON_OBJECT( 'Header' VALUE JSON_OBJECT( 'SenderID' VALUE 'INS015', 'PayerID' VALUE 'INS015')) from dual;
补充说明
Oracle 12cR2及以上版本支持'key' : value的简化写法,但这种写法在PL/SQL游标中可能触发绑定变量的解析逻辑,改用标准的'key' VALUE value语法既能避免错误,也能保持SQL兼容性。
内容的提问来源于stack exchange,提问作者Damo
相关产品推荐
相关产品推荐

