【发布时间】:2017-10-22 16:29:50
【问题描述】:
我正在尝试使用 Application Express 在 Oracle 12c 中以编程方式在 PL/SQL 触发器中查找 JSON 数组的长度。这将允许我遍历每个元素并将数据插入另一个表。现在 JSON 作为 CLOB 存储在列中,我将其转换为 VarCHAR2。代码如下:
declare
json CLOB;
json_varchar VARCHAR2(32767);
json_member WWV_FLOW_T_VARCHAR2;
begin
json := :new.ORDER_SKU;
json_varchar := CAST(json AS VARCHAR2);
apex_json.parse (json);
json_member := APEX_JSON.get_members(p_path=>'order_sku');
FOR i IN 1..json_member.count
LOOP
...
END LOOP;
end;
运行此触发器时出现以下错误:
SQL 错误消息:ORA-06502:PL/SQL:数字或值错误
ORA-06512:在“APEX_050100.WWV_FLOW_JSON”,第 1597 行
ORA-06512:在“触发器名称”,第 9 行
ORA-04088: 执行触发器“TriggerName”时出错
ORA-06512: 在第 6 行`
我想我应该只是使用不同的方法来查找 JSON 数组的长度,但我无法通过文档或堆栈溢出找到任何内容。
另外,如果有帮助,JSON 会以以下形式存储:
{
"order_sku":[{"sku1":"details"},{"sku2":"details"}]
}
【问题讨论】:
-
感谢 N Cheadle。看起来你在 12c 上。我想知道您是否研究过 12cR1 中引入的 json 支持?它具有可能感兴趣的功能,例如
json_table。 docs.oracle.com/database/121/ADXDB/json.htm#ADXDB6246 -
JSON_Table 完成了我打算对触发器执行的操作,感谢您的评论。
标签: oracle plsql oracle-apex oracle12c oracle-apex-5