0
A
回答
0
我在下面的解决方案中实现。它适用于12c版本的数据库,无需使用任何第三方工具/库。
https://docs.oracle.com/database/122/ADJSN/json-in-oracle-database.htm#ADXDB6371
部署在生产中的变化:)
1
正如Alex Poole在评论中提到的那样,如果您使用的是Oracle 12c,那么您将拥有支持创建和读取JSON的丰富功能。即使您在早期版本上运行,并且安装了Oracle APEX 5.0或更高版本(如果没有,您可以安装它,它是免费的),那么您可以利用丰富的APEX_JSON包以及它提供的类似功能。
但是,如果这两个选项都不适合您,那么您可以使用PL/SQL包套件。下面是一个简单的片段,向您展示如何在安装后使用它们。
DECLARE
l_param_list VARCHAR2(512);
l_http_request UTL_HTTP.req;
l_http_response UTL_HTTP.resp;
l_response_text VARCHAR2(32767);
l_list json_list; --json array type
A_id VARCHAR2(200);
UserId VARCHAR2(100);
UserName VARCHAR2(100);
OutletCode VARCHAR2(100);
OutletName VARCHAR2(100);
MobileNumber VARCHAR2(100);
PhoneNumber VARCHAR2(100);
Address VARCHAR2(100);
City VARCHAR2(100);
State VARCHAR2(100);
Postcode VARCHAR2(100);
Email VARCHAR2(100);
UpdateCount VARCHAR2(100);
loginCount VARCHAR2(100);
ReferencePhoto VARCHAR2(100);
Updates VARCHAR2(100);
AccountLocked VARCHAR2(100);
Oracle_Flag VARCHAR2(100);
acl VARCHAR2(100);
BEGIN
-- preparing Request...
l_http_request := UTL_HTTP.begin_request('/*your GET service URL here*/'
, 'GET'
, 'HTTP/1.1');
-- ...set header's attributes
UTL_HTTP.set_header(l_http_request, '/*header name*/', '/*header value*/');
-- ...set input parameters
-- UTL_HTTP.write_text(l_http_request, l_param_list);
-- get Response and obtain received value
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);
l_list := json_list(l_response_text); -- get json response here
--loop through JSON response array:
FOR i IN 1..l_list.count
LOOP
A_id := json_ext.get_string(json(l_list.get(i)),'_id');
UserId := json_ext.get_string(json(l_list.get(i)),'UserId');
UserName := json_ext.get_string(json(l_list.get(i)),'UserName');
OutletCode := json_ext.get_string(json(l_list.get(i)),'OutletCode');
OutletName := json_ext.get_string(json(l_list.get(i)),'OutletName');
MobileNumber := json_ext.get_string(json(l_list.get(i)),'MobileNumber');
PhoneNumber := json_ext.get_string(json(l_list.get(i)),'PhoneNumber');
Address := json_ext.get_string(json(l_list.get(i)),'Address');
City := json_ext.get_string(json(l_list.get(i)),'City');
State := json_ext.get_string(json(l_list.get(i)),'State');
Postcode := json_ext.get_string(json(l_list.get(i)),'Postcode');
Email := json_ext.get_string(json(l_list.get(i)),'Email');
UpdateCount := json_ext.get_string(json(l_list.get(i)),'UpdateCount');
loginCount := json_ext.get_string(json(l_list.get(i)),'loginCount');
ReferencePhoto := json_ext.get_string(json(l_list.get(i)),'ReferencePhoto');
Updates := json_ext.get_string(json(l_list.get(i)),'Updates');
AccountLocked := json_ext.get_string(json(l_list.get(i)),'AccountLocked');
Oracle_Flag := json_ext.get_string(json(l_list.get(i)),'Oracle_Flag');
acl := json_ext.get_string(json(l_list.get(i)),'acl');
--insert into your table
insert .....
+0
我知道这两个工具。但我无法安装APEX或PL/JSON,因为我无法在生产中安装它们。我只能从本机PL/SQL代码中实现此功能。我正在使用12c数据库版本。 – Rohit
相关问题
- 1. 将CLOB插入到Oracle数据库中
- 2. 将XSL模板中的小数部分提取到变量中
- 3. 使用Oracle数据库中的SQL从XML Clob中提取数据
- 4. 从CLOB中提取特定行 - ORACLE
- 5. Oracle 10g:从XML中提取数据(选择)(CLOB类型)
- 6. 如何从参数中将BLOB复制到Oracle PL/SQL中的局部变量?
- 7. PHP Excel - 将数据提取到变量
- 8. 无法从json文件中将数据提取到php变量中
- 9. Oracle SQL从CLOB中提取CSV文件并加载到表中
- 10. oracle中的全局变量
- 11. 将变量提取到具有全局范围的模板中
- 12. Java:如何将CLOB插入到oracle数据库中
- 13. SQL提取XML的Clob导致Oracle 10g数据库,以冻结
- 14. 将局部变量连接到参数
- 15. 为什么将spark中的参数提取为局部变量会更安全?
- 16. 从变量中添加参数以提取json数据
- 17. JSON/AJAX和局部变量
- 18. 在oracle中连接CLOB数据
- 19. 在Node.js中将json数据读入全局变量
- 20. Oracle 12c:从XML(CLOB类型)提取数据(选择)
- 21. 我不能将数据绑定到WPF/XAML的局部变量
- 22. JS全局变量到局部变量
- 23. 将json数据加载到javascript全局变量
- 24. Oracle 10gR2 CLOB数据类型
- 25. 如何将数据从JSON保存到NodeJS中的变量中
- 26. AspectJ中的局部变量
- 27. Python中的局部变量
- 28. 在java中将局部变量转换为全局变量
- 29. Oracle过程:并发和CLOB变量
- 30. viewdidload中的局部变量
哪个Oracle的版本? 12c具有本机JSON处理。在早期版本中,您可以尝试[PL/JSON](https://github.com/pljson/pljson/)。 –
我正在使用12c版本。由于要求,不能使用PL/JSON或APEX。我如何在没有任何库的情况下从PL/SQL中实现? – Rohit
如果您在12c上,请使用内置的[JSON处理](https://docs.oracle.com/database/121/ADXDB/json.htm#ADXDB6246),因为Hawk已经在他们的答案中链接了。 –