You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle PL/SQL实现JSON转自定义对象的代码中文解析请求

Oracle PL/SQL JSON转SQL对象代码中文说明

功能概述

这段PL/SQL代码实现了将JSON格式数据转换为Oracle自定义SQL对象(对象类型+表类型),并遍历输出转换后的结构化数据。

代码逐段说明

1. 定义自定义对象类型 json_record_type

创建一个对象类型,用于映射JSON中单条数据的结构,包含三个属性:

  • id:数字类型,对应JSON中的id字段
  • name:长度50的字符串类型,对应JSON中的name字段
  • age:数字类型,对应JSON中的age字段
CREATE OR REPLACE TYPE json_record_type
AS
  OBJECT
  (
    id    NUMBER,
    name  VARCHAR2(50),
    age   NUMBER 
  );

(注:原代码中age前的反引号为无效语法,已修正)

2. 定义自定义表类型 json_table_type

基于上述对象类型,创建一个表类型,用于存储多条json_record_type对象,以此模拟JSON数组的结构。

CREATE OR REPLACE TYPE json_table_type
AS
  TABLE OF json_record_type;

3. 主程序块:JSON数据解析与转换

这部分是核心执行逻辑:

  • 变量声明:
    • json_data:CLOB类型,存储待解析的JSON字符串,包含一个data数组,数组内是两条用户数据
    • json_obj:自定义表类型json_table_type,用于存储转换后的SQL对象集合
  • 解析转换:使用JSON_TABLE函数将JSON数据解析为关系型数据,通过$.data[*]定位JSON数组中的每一条元素,再通过PATH指定字段映射关系,最后用BULK COLLECT将批量数据存入json_obj
  • 遍历输出:循环遍历json_obj,通过DBMS_OUTPUT.PUT_LINE输出每条数据的id、name、age信息
DECLARE
  json_data CLOB := '{"data": [ {"id": 1, "name": "John", "age": 30}, {"id": 2, "name": "Alice", "age": 25} ] }';
  json_obj json_table_type;
BEGIN
  SELECT * BULK COLLECT
  INTO json_obj
  FROM JSON_TABLE(json_data, '$.data[*]' COLUMNS ( 
    ID NUMBER PATH '$.id', 
    name VARCHAR2(50) PATH '$.name', 
    age NUMBER PATH '$.age' 
  ) );
  FOR i IN 1..json_obj.COUNT
  LOOP
    DBMS_OUTPUT.PUT_LINE('ID: ' || json_obj(i).id || ', Name: ' || json_obj(i).name || ', Age: ' || json_obj(i).age);
  END LOOP;
END;
/

执行输出结果

运行代码后,控制台会输出:

ID: 1, Name: John, Age: 30
ID: 2, Name: Alice, Age: 25

内容的提问来源于stack exchange,提问作者chiranth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 12:57:49