--JsonArray 转 Table,返回临时表名 procedure JsonArrarToTable(v_json clob,v_tabname out varchar2,v_res_code out number,v_res_msg out varchar2) is v_jsonArray json_list; v_jsonObj json; v_fiels json_list; v_values json_list; v_value json_value; v_cnt1 pls_integer; v_cnt2 pls_integer; v_name varchar2(100); v_sql varchar2(4000):=''; begin v_jsonArray:=json_list(v_json); v_tabname:='tmp_table1'; v_sql:='create table '||v_tabname||'('; if v_jsonArray.count=0 then v_res_code:=-1; v_res_msg:='必传参数为空或参数不符合规定!'; return; end if; --循环取出每个JsonObject for v_cnt1 in 1..v_jsonArray.count loop v_jsonObj := json(v_jsonArray.get(v_cnt1)); --生成表结构 if v_cnt1=1 then if v_jsonObj.count=0 then v_res_code:=-1; v_res_msg:='必传参数为空或参数不符合规定!'; return; end if; v_fiels:=v_jsonObj.get_keys(); for v_cnt2 in 1..v_fiels.count loop v_sql:=v_sql||v_fiels.get(v_cnt2).get_string||' varchar2(500),'; end loop; v_sql:=substr(v_sql,1,length(v_sql)-1)||')'; execute immediate v_sql; end if; --插入数据 v_sql:='insert into '||v_tabname||' values('; for v_cnt2 in 1..v_jsonObj.count loop v_value:=v_jsonObj.get(v_cnt2); if v_value.is_string then v_sql:=v_sql||''''||v_value.get_string||''','; else v_sql:=v_sql||v_value.get_number||','; end if; end loop; v_sql:=substr(v_sql,1,length(v_sql)-1)||')'; --dbms_output.put_line(v_sql); execute immediate v_sql; end loop; v_res_code:=1; v_res_msg:=''; exception when others then rollback; v_res_code:=0; v_res_msg:=sqlerrm; end JsonArrarToTable;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架