我正在嘗試在Oracle 12c中使用Application Express以編程方式在PL/SQL觸發器中查找JSON數組的長度。這將允許我遍歷每個元素並將數據插入到另一個表中。現在,JSON作爲CLOB存儲在列中,並將其轉換爲VarCHAR2。下面的代碼:在PL/SQL中查找JSON數組的長度觸發器
SQL錯誤消息:ORA-06502:PL/SQL:數字或值錯誤
ORA-06512: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;
運行此觸發時,我收到以下錯誤的「APEX_050100.WWV_FLOW_JSON」,線1597
ORA-06512:在 「TriggerName」,第9行
ORA-04088:觸發器 'TriggerName'
ORA-06512的執行期間的錯誤:在線路6`
我想我應該只是使用不同的方法來查找JSON數組的長度,但我一直沒有找到任何通過文檔或堆棧溢出。
此外,如果它是幫助JSON存儲在以下形式:
{
"order_sku":[{"sku1":"details"},{"sku2":"details"}]
}
謝謝N Cheadle。它看起來像你在12c。我想知道你是否研究過12cR1引入的json支持?它具有可能感興趣的'json_table'等功能。 https://docs.oracle.com/database/121/ADXDB/json.htm#ADXDB6246 – alexgibbs
JSON_Table做了我打算對觸發器做的感謝評論。 –