【发布时间】:2015-01-23 05:08:49
【问题描述】:
我创建了以下脚本,以便从 Oracle SQL Developer 的 Mobile App DB(基于 MongoDB)中读取数据:
宣布 l_param_list VARCHAR2(512); l_http_request UTL_HTTP.req; l_http_response UTL_HTTP.resp; l_response_text VARCHAR2(32767); 开始 -- 服务的输入参数 -- 准备请求... l_http_request := UTL_HTTP.begin_request ('https://api.appery.io/rest/1/db/collections/Photos?where=%7B%22Oracle_Flag%22%3A%22Y%22%7D' , '得到' , 'HTTP/1.1'); -- ...设置标题的属性 UTL_HTTP.set_header(l_http_request, 'X-Appery-Database-Id', '53f2dac5e4b02cca64021dbe'); --UTL_HTTP.set_header(l_http_request, '内容长度', LENGTH(l_param_list)); -- ...设置输入参数 -- UTL_HTTP.write_text(l_http_request, l_param_list); -- 获取响应并获取接收值 l_http_response := UTL_HTTP.get_response(l_http_request); UTL_HTTP.read_text(l_http_response, l_response_text); DBMS_OUTPUT.put_line(l_response_text); 插入appery值(l_response_text); -- 最终确定 UTL_HTTP.end_response(l_http_response); 例外 WHEN UTL_HTTP.end_of_body 然后 UTL_HTTP.end_response(l_http_response); 结尾; /响应 (l_response_text) 是一个类似 JSON 的字符串。例如:
[{"Postcode":"47100","OutletCode":"128039251","MobileNumber":"0123071303","_createdAt":"2014-11-10 06:12:49.837","_updatedAt": "2014-11-10 06:12:49.837"}, {"邮编":"32100","OutletCode":"118034251", .....]
代码运行良好,并将响应插入到一个名为 appery 的列表中。但是,我需要解析这个响应,以便每个数组进入一个名为 appery_test 的表中的特定列。 appery_test 表的列数与 JSON 对数相同,顺序相同。
我搜索了大部分关于将 Oracle 表解析为 JSON 的结果,而不是相反。不过,我发现this 链接与我的问题有些相似。但是,答案中建议的库没有任何示例说明如何使用它将 JSON 插入使用 PL/SQL 的常规表中。
注意:我使用的是 11g 而不是 12c。所以built in 函数对我不可用。
【问题讨论】: