posts - 9,comments - 10,views - 54万
复制代码
--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;
复制代码

 

posted on   清风暮雨  阅读(1756)  评论(1编辑  收藏  举报
编辑推荐:
· 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 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示