一种数据库存储过程入参系统和方法技术方案

技术编号:20272419 阅读:36 留言:0更新日期:2019-02-02 03:37
本发明专利技术公开了一种数据库存储过程入参系统和方法,包括程序端(101)、数据库端(103)和公用存储解析端(102),程序端(101)连接到公用存储解析端(102),公用存储解析端(102)连接到数据库端(103);程序端(101)用于将入参打包为一个或多个json数据包并发送到公用存储解析端(102);公用存储解析端(102)用于将一个或多个json数据包进行解析后发送到数据库端(103)入参存储;本发明专利技术省去了程序端大量的工作,对于数据库端,本发明专利技术让数据库端面对入参更加灵活。让程序端与数据库端双方的任务独立,不再存在需要共同定义的任务,让整个流程更加简洁明了。

【技术实现步骤摘要】
一种数据库存储过程入参系统和方法
本专利技术涉及数据库
,尤其涉及的是一种数据库存储过程入参系统和方法。
技术介绍
在运用关系型数据库开发的程序中,调用数据库存储是很常见的对数据库操作的方式。程序调用存储过程,需要输入全部存储过程的输入参数。比如,数据库开发人员写了一个存储,命名为pr_sign_doc_advice_add,用于写入医生医嘱列表(t_sign_doc_advice_list);开发人员的调用方式是调用数据库语句实现sql语句callpr_sign_doc_advice_add(p_signatory_id,p_msg_content,p_medicine);来记录医生医嘱,p_signatory_id为用户ID,p_msg_content为医嘱信息,p_medicine为药物信息。但是当某一个入参结构复杂时,通过调用单一存储来完成信息记录的方法会让存储的入参变得很长,或者消耗大量的时间进行在存储内进行字符串拆分并且定义大量变量,程序在调用存储传入参数时也会消耗时间来进行数据组装。比如,pr_sign_doc_advice_add中的p_medicine,药物信息在医嘱中很可能存在多个,且包含药物名称、用药途径、药物使用频次等多种信息,存在多组时需要定义多个p_medicine或是以字符串的形式打包为一个字段,且数据表和存储需要做出冗余来保证最大数量的药物信息。现有存储在面对入参复杂的情况时,多采用细分入参或循环调用存储的方法来进行处理。现有方案缺点有以下几点:第一,需要程序开发人员与数据库开发人员共同定义入参,面对改动时双方均需要进行调整;第二,复杂入参需要在入参结构上做出冗余或者反复调用存储,占用空间和时间;第三,需要程序根据定义好的入参进行不必要的拆分和组装;第四,存储需要根据程序对于复杂入参的组装方式做出不同的拆分操作,定义大量变量,使存储的结构不清晰。因此,现有技术存在缺陷,需要改进。
技术实现思路
本专利技术所要解决的技术问题是针对现有技术的不足提供一种数据库存储过程入参系统和方法。本专利技术的技术方案如下:一种数据库存储过程入参系统,包括程序端(101)、数据库端(103)和公用存储解析端(102),程序端(101)连接到公用存储解析端(102),公用存储解析端(102)连接到数据库端(103);程序端(101)用于将入参打包为一个或多个json数据包并发送到公用存储解析端(102);公用存储解析端(102)用于将一个或多个json数据包进行解析后发送到数据库端(103)入参存储。优选的,所述的数据库存储过程入参系统,程序端(101)用于将入参打包为单层json数据包或者多层json数据包;单层json数据包即该json数据包内部不嵌套其他json数据包;多层json数据包即该json数据包内部嵌套有其他单层json数据包或多层json数据包。优选的,所述的数据库存储过程入参系统,程序端(101)包括N个打包单元,N大于等于2,用于打包得到多层json数据包。优选的,所述的数据库存储过程入参系统,程序端(101)包括第一打包单元(1011)、第二打包单元(1012)、第三打包单元(1013)直至第N打包单元(101)N,第一打包单元(1011)用于将入参数据中最末层级的不可拆分参数打包为一个第一json数据包,第二打包单元(1012)用于将入参数据中次末层级的不可拆分参数和第一json数据包共同打包为一个第二json数据包,第三打包单元(1013)用于将入参数据中次次末层级的不可拆分参数和第二json数据包共同打包为一个第三json数据包,这样依次类推直至将所有层级的不可拆分参数打包完毕得到第Njson数据包,第Njson数据包即为一个多层json数据包。优选的,所述的数据库存储过程入参系统,公用存储解析端(102)包括临时表存储单元和N个解析单元(N大于等于(2)),N个解析单元分别用于将程序端发来的json数据包按照打包层级关系层层解析后以表格形式存储到临时表存储单元中。优选的,所述的数据库存储过程入参系统,公用存储解析端(102)包括临时表存储单元、第一解析单元(1021)、第二解析单元、第三解析单元(1023)直至第N解析单元(102)N,和打包的顺序相反,第一解析单元(1021)用于将第Njson数据包解析后存储于临时表存储单元中,将第Njson数据包解析结果赋值于存储内的变量,将临时表存储单元清空,第二解析单元(1021)用于将第N-(1)json数据包解析后存储于临时表存储单元中,将第N-(1)json数据包解析结果赋值于存储内的变量,将临时表存储单元清空,以此类推,直至得到最末层级的第一json数据包的解析结果,将所有解析结果按照业务逻辑发送到数据库端,完成最后的入库工作。优选的,所述的数据库存储过程入参系统,临时表存储单元中设置seq_id、key_index、key_name、key_value、parent_key,seq_id为自增主键,key_index用于记录该条数据为来源的参数层级,key_name存放键名,key_value存放值,parent_key存放关联父键。根据所述的数据库存储过程入参系统的入参方法,包括以下步骤:程序端(101)将入参打包为一个或多个json数据包并发送到公用存储解析端(102);公用存储解析端(102)将一个或多个json数据包进行解析后发送到数据库端(103)入参存储。优选的,所述的入参方法,程序端(101)将入参打包为单层json数据包或者多层json数据包;单层json数据包即该json数据包内部不嵌套其他json数据包;多层json数据包即该json数据包内部嵌套有其他单层json数据包或多层json数据包。优选的,所述的入参方法,程序端(101)将入参进行N次打包,N大于等于2,打包得到多层json数据包。优选的,所述的入参方法,N次打包为:第一次打包:将入参数据中最末层级的不可拆分参数打包为一个第一json数据包;第二次打包:将入参数据中次末层级的不可拆分参数和第一json数据包共同打包为一个第二json数据包;第三次打包:将入参数据中次次末层级的不可拆分参数和第二json数据包共同打包为一个第三json数据包,这样依次类推直至将所有层级的不可拆分参数打包完毕得到第Njson数据包,第Njson数据包即为一个多层json数据包。优选的,所述的入参方法,公用存储解析端(102)执行N个解析流程,N大于等于2,N个解析流程依次将程序端发来的json数据包按照打包层级关系层层解析后以表格形式存储到临时表存储单元中。优选的,所述的入参方法,N个解析流程为:和N次打包的顺序相反,第一次解析:将第Njson数据包解析后存储于临时表存储单元中,将第Njson数据包解析结果赋值于存储内的变量,将临时表存储单元清空;第二次解析:将第N-1json数据包解析后存储于临时表存储单元中,将第N-1json数据包解析结果赋值于存储内的变量,将临时表存储单元清空,以此类推,直至得到最末层级的第一json数据包的解析结果,将所有解析结果按照业务逻辑发送到数据库端,完成最后的入库工作。本专利技术具有如下有益效果:本专利技术极大优化了入参本文档来自技高网
...

【技术保护点】
1.一种数据库存储过程入参系统,其特征在于,包括程序端(101)、数据库端(103)和公用存储解析端(102),程序端(101)连接到公用存储解析端(102),公用存储解析端(102)连接到数据库端(103);程序端(101)用于将入参打包为一个或多个json数据包并发送到公用存储解析端(102);公用存储解析端(102)用于将一个或多个json数据包进行解析后发送到数据库端(103)入参存储。

【技术特征摘要】
1.一种数据库存储过程入参系统,其特征在于,包括程序端(101)、数据库端(103)和公用存储解析端(102),程序端(101)连接到公用存储解析端(102),公用存储解析端(102)连接到数据库端(103);程序端(101)用于将入参打包为一个或多个json数据包并发送到公用存储解析端(102);公用存储解析端(102)用于将一个或多个json数据包进行解析后发送到数据库端(103)入参存储。2.根据权利要求1所述的数据库存储过程入参系统,其特征在于,程序端(101)用于将入参打包为单层json数据包或者多层json数据包;单层json数据包即该json数据包内部不嵌套其他json数据包;多层json数据包即该json数据包内部嵌套有其他单层json数据包或多层json数据包。3.根据权利要求3所述的数据库存储过程入参系统,其特征在于,程序端(101)包括第一打包单元(1011)、第二打包单元(1012)、第三打包单元(1013)直至第N打包单元(101)N,第一打包单元(1011)用于将入参数据中最末层级的不可拆分参数打包为一个第一json数据包,第二打包单元(1012)用于将入参数据中次末层级的不可拆分参数和第一json数据包共同打包为一个第二json数据包,第三打包单元(1013)用于将入参数据中次次末层级的不可拆分参数和第二json数据包共同打包为一个第三json数据包,这样依次类推直至将所有层级的不可拆分参数打包完毕得到第Njson数据包,第Njson数据包即为一个多层json数据包。4.根据权利要求3所述的数据库存储过程入参系统,其特征在于,程序端(101)包括N个打包单元,N大于等于2,用于打包得到多层json数据包;公用存储解析端(102)包括临时表存储单元和N个解析单元(N大于等于(2)),N个解析单元分别用于将程序端发来的json数据包按照打包层级关系层层解析后以表格形式存储到临时表存储单元中。5.根据权利要求4所述的数据库存储过程入参系统,其特征在于,公用存储解析端(102)包括临时表存储单元、第一解析单元(1021)、第二解析单元、第三解析单元(1023)直至第N解析单元(102)N,和打包的顺序相反,第一解析单元(1021)用于将第Njson数据包解析后存储于临时表存储单元中,将第Njson数据包解析结果赋值于存储内的变量,将临时表存储单元清空,第二解析单元(1021)用于将第N-(1)json数据包解析后存储于临时表存储单元中,将第N-(1)json数据包解析结果赋值于存储内的变量,将临时表存储单元清...

【专利技术属性】
技术研发人员:邹宜孝王海张凤尧张俊
申请(专利权)人:贵阳朗玛信息技术股份有限公司
类型:发明
国别省市:贵州,52

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1