问题描述
示例JSON:
我试图利用pljson:
我能够提取,我不知道也许位置或地址值从这个JSON,但当我想提取元素term-id或bank-id我得到错误PL/SQL ORA-30625: 方法调度空自参数是不允许的。也许是因为 “-” 之间的标志?
谢谢。
[ { "term-id": "BA000000", "bank-id": "111", "location": "Poslovalnica banke", "address": "Cankarjeva ulica 2", "city": "Ljubljana", "post-code": "1000", "printer": "true", "deposit": "false", "accessible": "true", "cards": "DECPVR", "special-payments": "false", "BNA": "false", "transaction-receipt": "true", "latitude": 46.051671, "longitude": 14.505122 } ]复制
我试图利用pljson:
declare w_req t_http_request := t_http_request(); w_res t_http_response; w_vrni clob; w_json pljson; w_jsonValue pljson_value; w_jsonList pljson_list; w_test varchar2(100); begin w_req.url := 'https://api.bankart.si/psd2/hub/v1/' || 'ATMList'; w_req.add_header('x-ibm-client-id', 'client-id'); w_res := https_client.doGet (w_req, 'DB'); w_vrni := hibis_util.convertBlobToClob(w_res.content_blob,'AL32UTF8'); w_jsonList := pljson_list(w_vrni); if w_jsonList is not null and w_jsonList.count > 0 then for i in 1..w_jsonList.count loop w_json := pljson(w_jsonList.get(i)); w_jsonValue := w_json.get('term-id'); w_test := w_jsonValue.get_string; dopl(w_test); end loop; end if; end;复制
我能够提取,我不知道也许位置或地址值从这个JSON,但当我想提取元素term-id或bank-id我得到错误PL/SQL ORA-30625: 方法调度空自参数是不允许的。也许是因为 “-” 之间的标志?
谢谢。
专家解答
我不熟悉PL/JSON,但我怀疑问题出在这里:
for i in 1..w_jsonList.count loop
JSON数组是零索引的,因此第一项位于位置零。这从位置1开始搜索。您需要更改循环的开始和结束值:
for i in 0..w_jsonList.count - 1 loop
以下是使用12.2中添加的PL/SQL对象类型的示例:
for i in 1..w_jsonList.count loop
JSON数组是零索引的,因此第一项位于位置零。这从位置1开始搜索。您需要更改循环的开始和结束值:
for i in 0..w_jsonList.count - 1 loop
以下是使用12.2中添加的PL/SQL对象类型的示例:
declare doc json_array_t; item json_element_t; begin doc := json_array_t.parse ( '[ { "term-id": "BA000000", "bank-id": "111", "location": "Poslovalnica banke", "address": "Cankarjeva ulica 2", "city": "Ljubljana", "post-code": "1000", "printer": "true", "deposit": "false", "accessible": "true", "cards": "DECPVR", "special-payments": "false", "BNA": "false", "transaction-receipt": "true", "latitude": 46.051671, "longitude": 14.505122 } ]' ); for i in 1 .. doc.get_size loop item := doc.get ( i ); dbms_output.put_line ( treat ( item as json_object_t ).get ( 'term-id' ).to_String ); end loop; end; / ORA-30625: method dispatch on NULL SELF argument is disallowed declare doc json_array_t; item json_element_t; begin doc := json_array_t.parse ( '[ { "term-id": "BA000000", "bank-id": "111", "location": "Poslovalnica banke", "address": "Cankarjeva ulica 2", "city": "Ljubljana", "post-code": "1000", "printer": "true", "deposit": "false", "accessible": "true", "cards": "DECPVR", "special-payments": "false", "BNA": "false", "transaction-receipt": "true", "latitude": 46.051671, "longitude": 14.505122 } ]' ); for i in 0 .. doc.get_size - 1 loop item := doc.get ( i ); dbms_output.put_line ( treat ( item as json_object_t ).get ( 'term-id' ).to_String ); end loop; end; / "BA000000"复制
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
564次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
494次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
465次阅读
2025-04-01 11:08:44
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
456次阅读
2025-04-08 09:12:48
墨天轮个人数说知识点合集
JiekeXu
456次阅读
2025-04-01 15:56:03
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
443次阅读
2025-04-22 00:20:37
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
431次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
418次阅读
2025-04-22 00:13:51
Oracle 19c RAC更换IP实战,运维必看!
szrsu
404次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
375次阅读
2025-04-17 17:02:24