Oracle ords:如何使用集合

时间:2016-01-18 17:16:02

标签: json oracle post put oracle-ords

我创建了一个post方法来接收客户的地理位置数据: Post method

当我使用JSON调用post方法时:

{"customer": 1, "latitude":-21.13179, "longitude":-47.736782 }

我的PL / SQL脚本有效。

现在我想发送一组记录,但我不知道该怎么做。 我创建了一个PUT方法来接收地理定位集合,我构建了一个脚本来解析参数: Put method

当我使用JSON调用put方法时:

{  
   "items":[  
      {  
         "customer":1,
         "latitude":-21.13179,
         "longitude":-47.736782
      },
      {  
         "customer":1,
         "latitude":-21.13179,
         "longitude":-47.736782
      }
   ]
}
PL/SQL code:

declare
l_values apex_json.t_values;
begin
apex_json.parse (
           p_values => l_values,
           p_source => :items );
end;

我收到了消息:

400 - Bad Request - Expected a value but got: START_ARRAY.

我做错了什么? 我想创建一个post / put方法来接收一个集合。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

我面临同样的问题,原因将在下面的网址中发布。

https://community.oracle.com/thread/2182167?start=0&tstart=0

“在APEX Listener 1.1中,PL / SQL Hander会自动将JSON属性转换为隐式参数。请注意,这仅适用于简单的JSON对象,不支持数组或嵌套对象。”

基本上 - 一个人无法传递集合/数组。我不确定现在是否已经改变,或者是否有任何计划在路线图中改变这一点。

答案 1 :(得分:0)

There is an example in OracleBase显示了一种在12c中使用'JSON_Table'和在12Cr2中使用'JSON_Obect_t'pl / sql的方法。 JSON数据作为Blob传递到存储的proc,然后该proc进行解析和更新。我尚未对其进行测试,但是它似乎是一种处理集合的好方法,显然,ORDS不能“即开即用”地对其进行处理。我已经尝试过使用bulkload方法加载临时表,但这仅适用于csv,有点繁琐。这是Jeff Smiths blog post on that

我还没有测试过,我重建了单独发送每个条目的方法,但最终我需要使用它。当我做例子我会更新这个答案。