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
相关产品推荐
相关产品推荐

