使用oracleplsql,请告诉我如何使用json_table、bfilename和"Bulk Collect"从json文件中读取数据.

json文件包含两个字符串列表:

{ 
  "included_errors": [ "include1", "include2" ],
  "excluded_errors": [ "exclude1", "exclude2" ]
}

在不使用中间表的情况下,我希望将两个字符串列表加载到两个嵌套表的列表变量中,即:

TYPE list_t IS TABLE OF VARCHAR2(100);

l_included_errors list_t;
l_excluded_errors list_t;

然后我将在for循环中遍历列表.

推荐答案

我最后做了以下事情,这很管用:

DECLARE
  TYPE T_STRINGS IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;
  include_list T_STRINGS;
  exclude_list T_STRINGS;
  json_file    BFILE;
BEGIN
  json_file := BFILENAME('MY_DIRECTORY', 'my_file.json');

  SELECT my_data
    BULK COLLECT
    INTO include_list
    FROM JSON_TABLE(json_file,
                    '$.included_errors[*]'
                    COLUMNS(my_data VARCHAR2(1000) PATH '$'));

  SELECT valor
    BULK COLLECT
    INTO exclude_list
    FROM JSON_TABLE(json_file,
                    '$.excluded_errors[*]'
                    COLUMNS(valor VARCHAR2(1000) PATH '$'));

  -- process both lists here
  NULL;
END;

Json相关问答推荐

如何在JMESPath中区分空和假?

带有PowerShell内核的NewtonSoft json.Net的奇怪行为

对面的行/列进行排序时可能出现错误

使用WSO2 JsonTransform Mediator对空值执行JsonExceptionUndeletedOperationException

由于无效的UTF-8开始字节0xa0,JSON被拒绝,但编码似乎有效

将部分数据字节解组到自定义 struct 中

在 SQL 存储过程中使用参数 Select 值

go 语言中的 JSON 到 XML

从 oracle 数据库中的 json blob 打印值

如何将复杂的 JSON 反序列化为 Rust 类型?

流导入错误:重新上传时不存在布局释放 UUID

Rails 控制器无需编码即可渲染 json

单元测试球衣 Restful Services

哪个更好:Json 或 XML (PHP)

应该使用什么标头将 GZIP 压缩 JSON 从 Android 客户端发送到服务器?

IE8 原生 JSON.parse 错误导致堆栈溢出

Jackson 中的 readValue 和 readTree:何时使用哪个?

JSON 和 BSON 哪个更轻量级?

SCRIPT5009:JSON未定义

使用 axios 在 POST multipart/form-data 请求中发送文件和 json