CN106547835B - 调用数据库存储过程的方法及装置 - Google Patents

调用数据库存储过程的方法及装置 Download PDF

Info

Publication number
CN106547835B
CN106547835B CN201610888153.3A CN201610888153A CN106547835B CN 106547835 B CN106547835 B CN 106547835B CN 201610888153 A CN201610888153 A CN 201610888153A CN 106547835 B CN106547835 B CN 106547835B
Authority
CN
China
Prior art keywords
parameters
datalist
list
storage process
filled
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610888153.3A
Other languages
English (en)
Other versions
CN106547835A (zh
Inventor
张俊
石铭煜
左华亚
杨坤
王海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guiyang Longmaster Information and Technology Co ltd
Original Assignee
Guiyang Longmaster Information and Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guiyang Longmaster Information and Technology Co ltd filed Critical Guiyang Longmaster Information and Technology Co ltd
Publication of CN106547835A publication Critical patent/CN106547835A/zh
Application granted granted Critical
Publication of CN106547835B publication Critical patent/CN106547835B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2443Stored procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种调用数据库存储过程的方法及装置。包括:调用数据库接口,获取待调用的存储过程在该数据库中所对应的参数列表;在存储过程的类型为更新表格类型且存储过程所要更新的表的主键不为空时,采用数据库接口查询出主键的数据列表;循环执行参数列表,如果传入参数中有待填充参数,则将传入参数填充到新建的空数组中,如果传入参数中没有待填充参数,则将从数据库数据列表中查询出来的数据填充到空数组中,如果传入参数和数据列表中均没有待填充参数,则将待填充参数复制为空字符串填充到空数组中;使用填充完的数组作为传入参数来调用存储过程。采上述技术方案,可简化程序调用存储过程的方案,使程序开发人员调用存储更为方便。

Description

调用数据库存储过程的方法及装置
技术领域
本发明涉及通信领域,具体而言,涉及一种调用数据库存储过程的方法及装置。
背景技术
在运用关系型数据库开发的程序中,调用数据库存储是对数据库操作很常见的操作方式。存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
程序调用存储过程,需要输入全部存储过程的输入参数,且顺序需要完全符合存储过程的设定;而现实中往往不是所有输入参数都需要传入,而且调用存储过程的程序开发也不是很关心参数的顺序。
例如,数据库开发人员写了一个存储,命名为pr_userinfo_upd,用于更新用户信息表(userinfo);开发人员的调用方式是调用数据库语句实现SQL语句call pr_userinfo_upd(p_user_id,p_user_name,p_user_age,p_user_sex,p_user_phone)来更新用户的信息,其中,需要输入用户id(用户表的唯一键),用户名字,用户年龄,用户性别,用户手机号。但是,如果只想更新用户的手机号,操作起来就很麻烦了,需要先把上述用户信息从数据库里面全部查询出来,然后替换掉手机号,再执行这个存储过程。为了节约开发成本,数据库不可能无限制的增加存储过程,例如,更新用户手机是一个存储过程,更新用户姓名是一个存储过程,更新用户年龄是一个存储过程等等,这样需要些很多很多种存储过程来满足更改用户信息这样一个功能;而是统一提供一个接口来改所有用户信息,当只需要更改用户的某个信息的时候,程序就需要从数据库里面,将上述所有的用户信息读取出来,然后再更新需要修改的字段,在调用这个通用的存储来实现更改用户的某个信息的功能。
此外,还存在另一个问题,传入存储过程的参数必须严格按照规定的顺序,如果顺序不对,就会出现不可预知的错误出来。例如,以上面的pr_userinfo_upd为例,call pr_userinfo_upd(p_user_id,p_user_name,p_user_age,p_user_sex,p_user_phone)这个是数据库定义模板正确的调用方式是call pr_userinfo_upd(10001,王XX,18,女,12345678901);说的是更新用户id为10001的这个用户,姓名改为王XX,年龄改为18,性别改为女,手机号改为12345678901。而错误的调用方式,例如,call pr_userinfo_upd(10001,王XX,女,18,12345678901);这样性别和年龄就会反了。
程序里面的列表数据往往是无序的,或者顺序和存储不一定对等。以php语言为例,array是php里面的数组数据类型
$datalist=array(
user_age=>18,
user_name=>王XX,
user_phone=>12345678901,
user_id=>10001,
user_sex=>女,
);表示申明一个数组类型datalist里面有年龄,姓名,手机号,用户id,性别。当要用datalist来调用存储过程更新用户数据的时候,就必须一个字段,一个字段的对齐。而这样操作,就必须先了解存储过程是怎么定义的,参数是什么顺序。
在需要使用数据库的程序开发的过程中,会遇到很多使用存储过程的场景,例如,增加一条个人信息表数据,或者增加一张体检信息表数据。这种数据库表可能会有很多的字段,甚至可能会达到成百上千个字段;这样每次程序调用存储过程添加数据的时候,不得不将所有的字段慢慢的核对位置和值是否匹配,大大地增加了无效和重复的工作。
发明内容
本发明的主要目的在于公开了一种调用数据库存储过程的方法及装置,以至少解决相关技术中针对大量调用存储过程的场景,每次程序调用存储过程添加数据的时候,不得不将所有的字段慢慢的核对位置和值是否匹配,大大地增加了无效和重复工作的问题。
根据本发明的一个方面,公开了一种调用数据库存储过程的方法。
根据本发明的调用数据库存储过程的方法包括:调用数据库接口,获取待调用的存储过程在该数据库中所对应的参数列表param_list;在上述存储过程的类型为更新表格类型且上述存储过程所要更新的表的主键不为空时,采用上述数据库接口查询出上述主键的数据列表datalist_org;循环执行参数列表param_list,如果传入参数中有待填充参数,则将上述传入参数填充到新建的空数组datalist_dest中,如果传入参数中没有上述待填充参数,则将从上述数据库数据列表中查询出来的数据填充到上述空数组datalist_dest中,如果传入参数和数据列表datalist_org中均没有待填充参数,则将待填充参数复制为空字符串填充到上述空数组datalist_dest中;使用填充完的数组datalist_dest作为传入参数来调用存储过程。
优选地,上述参数列表param_list包括按照顺序排列好的多个参数。
优选地,采用上述数据库接口查询出上述主键的数据列表datalist_org之前,还包括:根据上述存储过程的命名的全部或部分字段判断存储过程的类型是否为更新表格类型;在上述命名的全部或部分字段包括预定字段时,确定上述存储过程的类型为更新表格类型。
优选地,根据上述存储过程的命名的全部或部分字段判断存储过程的类型是否为更新表格类型,在上述命名的全部或部分字段包括预定字段时,确定上述存储过程的类型为更新表格类型包括:判断上述存储过程的命名的后缀是否是“_upd”字段;在上述存储过程的命名的后缀是“_upd”字段时,确定上述存储过程的类型为更新表格类型。
优选地,在循环执行参数列表param_list之前,还包括:新建上述空数组datalist_dest。
根据本发明的一个方面,公开了一种调用数据库存储过程的装置。
根据本发明的调用数据库存储过程的装置包括:获取模块,用于调用数据库接口,获取待调用的存储过程在该数据库中所对应的参数列表param_list;查询模块,用于在上述存储过程的类型为更新表格类型且上述存储过程所要更新的表的主键不为空时,采用上述数据库接口查询出上述主键的数据列表datalist_org;循环执行模块,用于循环执行参数列表param_list,如果传入参数中有待填充参数,则将上述传入参数填充到新建的空数组datalist_dest中,如果传入参数中没有上述待填充参数,则将从上述数据库数据列表中查询出来的数据填充到上述空数组datalist_dest中,如果传入参数和数据列表datalist_org中均没有待填充参数,则将待填充参数复制为空字符串填充到上述空数组datalist_dest中;调用模块,用于使用填充完的数组datalist_dest作为传入参数来调用存储过程。
优选地,上述参数列表param_list包括按照顺序排列好的多个参数。
优选地,上述装置还包括:判断模块,用于根据上述存储过程的命名的全部或部分字段判断存储过程的类型是否为更新表格类型;确定模块,用于在上述命名的全部或部分字段包括预定字段时,确定上述存储过程的类型为更新表格类型。
优选地,上述判断模块包括:判断单元,用于判断上述存储过程的命名的后缀是否是“_upd”字段;上述确定模块包括:确定单元,用于在上述存储过程的命名的后缀是“_upd”字段时,确定上述存储过程的类型为更新表格类型。
优选地,上述装置还包括:建立模块,用于建立上述空数组datalist_dest。
与现有技术相比,本发明实施例至少具有以下优点:开发人员不用关心存储过程参数的顺序,也不用关心如果是更新数据库表的话,需要传入全部信息这个问题,可简化程序调用存储过程的方案,使程序开发人员调用存储更为方便。
附图说明
图1是根据本发明实施例的调用数据库存储过程的方法的流程图;
图2是根据本发明优选实施例的调用数据库存储过程的方法的流程图;
图3是根据本发明实施例的调用数据库存储过程的装置的结构框图;以及
图4是根据本发明优选实施例的调用数据库存储过程的装置的结构框图。
具体实施方式
下面结合说明书附图对本发明的具体实现方式做一详细描述。
图1是根据本发明实施例的调用数据库存储过程的方法的流程图。如图1所示,该调用数据库存储过程的方法包括:
步骤S101:调用数据库接口,获取待调用的存储过程在该数据库中所对应的参数列表param_list;
步骤S103:在上述存储过程的类型为更新表格类型且上述存储过程所要更新的表的主键不为空时,采用上述数据库接口查询出上述主键的数据列表datalist_org;
步骤S105:循环执行参数列表param_list,如果传入参数中有待填充参数,则将上述传入参数填充到新建的空数组datalist_dest中,如果传入参数中没有上述待填充参数,则将从上述数据库数据列表中查询出来的数据填充到上述空数组datalist_dest中,如果传入参数和数据列表datalist_org中均没有待填充参数,则将待填充参数复制为空字符串填充到上述空数组datalist_dest中;
步骤S107:使用填充完的数组datalist_dest作为传入参数来调用存储过程。
现有的程序开发者调用存储过程的方式是使用第三方的数据库插件,按照存储过程的参数定义,顺序的传入所有存储过程要求的参数以实现调用存储。而采用图1所示的方法,抽象出一种方法给数据库开发人员调用,开发人员不用关心存储过程参数的顺序,也不用关心如果是更新数据库表的话,需要传入全部信息这个问题,可简化程序调用存储过程的方案,使程序开发人员调用存储更为方便。
优选地,上述参数列表param_list可以进一步包括按照顺序排列好的多个参数。例如,查询出来的就是$param_list=array("p_user_id","p_user_name","p_user_age","p_user_sex","p_user_phone");
在调用存储过程之前,先拉取该存储的调用参数,按照顺序,根据用户所要传入数据,和原有的表格数据来填补存储参数,这时调用存储就能保证存储参数的有效性和顺序了。
优选地,采用上述数据库接口查询出上述主键的数据列表datalist_org之前,还可以包括:根据上述存储过程的命名的全部或部分字段判断存储过程的类型是否为更新表格类型;在上述命名的全部或部分字段包括预定字段时,确定上述存储过程的类型为更新表格类型。
在优选实施过程中,根据上述存储过程的命名的全部或部分字段判断存储过程的类型是否为更新表格类型,在上述命名的全部或部分字段包括预定字段时,确定上述存储过程的类型为更新表格类型可以进一步包括:判断上述存储过程的命名的后缀是否是“_upd”字段;在上述存储过程的命名的后缀是“_upd”字段时,确定上述存储过程的类型为更新表格类型。
在优选实施过程中,如何确定当前存储过程是否更新表的存储,涉及到了需要预先规范存储过程的命名。例如,插入一条数据的存储过程命名可以为pr_表名_add,修改一条数据的存储过程命名可以为pr_表名_upd;则如果是以_upd结尾的存储过程,就可以确定这个是更新表数据的存储了。
优选地,在循环执行参数列表param_list之前,还可以包括:新建上述空数组datalist_dest。
在优选实施过程中,需要预先规范存储过程的命名,例如,插入一条数据的存储过程命名为pr_表名_add,修改一条数据的存储过程命名为pr_表名_upd;比如用户信息表,表名为userinfo,这样输入用户信息表的存储命名为pr_userinfo_add,修改用户信息表的存储命名为pr_userinfo_upd,存储参数的命名为p_表字段的名称,比如用户名的表字段名称为username,那当作为存储参数输入时的命名为p_username。
调用本发明提供的抽象方法时,需要传入需要调用的pro_name(存储过程名称),table_key(存储所修改的表的主键名称),和所有需要传入datalist(存储的数据列表)。
实现方式如下:先调用数据库接口,获取该存储在数据库中所对应的参数列表param_list(以mysql为例查询information_schema.PARAMETERS里面对应的数据库和存储的参数列表);如果存储过程的类型为更新表格类型(pro_name以upd结尾)且传入方法的主键(table_key)不为空,用数据库接口查询出该表所对应的主键的列表datalist_org。新建一个空数组datalist_dest,然后循环param_list,如果datalist中所对应的参数有值param,则datalist_dest[param]=datalist[param];如果datalist里没有对应的param且datalist_org里面有对应的参数的值,则datalist_dest[param]=datalist_org[param];如果datalist和datalist_org里都没有对应的param,则datalist_dest[param]复制为空字符串。最后用datalist_dest来充当所调用的数据库存储的参数列表。
以下结合图2的示例进一步描述上述优选实施方式。
图2是根据本发明优选实施例的调用数据库存储过程的方法的流程图。如图2所示,该调用数据库存储过程的方法包括:
步骤S201:先到数据库里面,按照传入参数的顺序查询出该存储过程所需要传入的参数。需要说明的是,上述参数是按照传入参数的顺序,查询出来的,也就是查询出来的是按顺序排列好的。
例如,定义了一个函数名字叫runProc,输入参数有3个,pro_name(存储过程名称),table_key(存储所修改的表的主键名称),datalist(存储的数据列表),举例,代码如下:
$datalist=array(
user_age=>18,
user_id=>10001,
);
runProc("pr_userinfo_upd","user_id",$datalist)。
其代码作用为更新用户的年龄为18岁。
采用步骤S201的操作,查询出来的结果如下:$paramlist=array("p_user_id","p_user_name","p_user_age","p_user_sex","p_user_phone")。
步骤S203:判断当前存储是否是更新表的存储,如果是,则查询出存储过程所要更新的表的主键所对应的数据列表datalist_org。
在优选实施过程中,对于如何确定存储是否是更新表的存储,需要涉及到了之前上述的,规范存储过程的命名。
例如,插入一条数据的存储过程命名为pr_表名_add,修改一条数据的存储过程命名为pr_表名_upd等,则以_upd结尾的存储过程,可确定这个是更新表数据的存储了。
例如,查询出user_id为10001的人的所有用户数据如下:
$datalist_org=array(
user_age=>17,
user_name=>王XX,
user_phone=>12345678901,
user_id=>10001,
user_sex=>女,
);
此处查询出来的是原始数据,而不是要更新的数据,要更新的是用户年龄更新为18。
步骤S205:新建一个空的数组datalist_dest,其中,$datalist_dest=array();数组datalist_dest用来存放最后调用存储过程的数据。
由此可见,该数组会慢慢的填充参数,最后把它构建成能够调用存储过程的数据数组。
步骤S207:循环执行步骤S201查询出来的参数列表$paramlist,例如,$paramlist=array("p_user_id","p_user_name","p_user_age","p_user_sex","p_user_phone"),循环执行这个数组,逐个填充datalist_dest数组。
例如,循环执行里面的代码:
while($paramlist=>$param){
if($datalist[$param]){
$datalist_dest[$param]=$datalist[$param];
}else if($datalist_org[$param]){
$datalist_dest[$param]=$datalist_org[$param];
}
}
对于原始数据:
$datalist=array(
user_age=>18,
user_id=>10001,
);
$datalist_org=array(
user_age=>17,
user_name=>王XX,
user_phone=>12345678901,
user_id=>10001,
user_sex=>女,
);
$paramlist=array("p_user_id","p_user_name","p_user_age","p_user_sex","p
_user_phone");
例如,第一轮循环如下:
while($paramlist=>$param){//$param为user_id
即当调用者传入的参数里面有user_id,为10001则进入第一个分支;
if($datalist[$param]){
即最终输出的数组的user_id就用调用者传入的参数。
$datalist_dest[$param]=$datalist[$param];
}else if($datalist_org[$param]){
$datalist_dest[$param]=$datalist_org[$param];
}
}
当调用者传入的参数里面有user_id为10001时,则最终输出的数组的user_id就用调用者传入的参数。
循环参数列表,如果调用者传入参数里面有该参数,则用调用者传入的参数来填充;如果调用者传入的参数列表里面没有该参数,则用从数据库数据列表datalist_org里查询出来的数据来填充。
例如,第二轮循环如下:
while($paramlist=>$param){//$param为user_name
即当调用者传入的参数里面没有user_name,而数据库原始数据列表中有user_name为王XX,则进入第二个分支:
if($datalist[$param]){
$datalist_dest[$param]=$datalist[$param];
}else if($datalist_org[$param]){
即最终输出的数组的user_name就用数据库原始数据列表中的数据。
$datalist_dest[$param]=$datalist_org[$param];
}
}
综上,循环执行参数列表param_list,如果传入参数中有待填充参数,则将上述传入参数填充到新建的空数组datalist_dest中,如果传入参数中没有上述待填充参数,则将从上述数据库数据列表中查询出来的数据填充到上述空数组datalist_dest中,如果传入参数和数据列表datalist_org中均没有待填充参数,则将待填充参数复制为空字符串填充到上述空数组datalist_dest中。
直至循环结束,以上例而言,得到如下结果:
$$datalist_dest=array(
user_id=>10001,
user_name=>王XX,
user_age=>18,
user_sex=>女,
user_phone=>12345678901,
);
步骤S209:使用填充完的数组datalist_dest作为传入参数来调用存储过程。
图3是根据本发明实施例的调用数据库存储过程的装置的结构框图。如图3所示,该调用数据库存储过程的装置包括:获取模块30,用于调用数据库接口,获取待调用的存储过程在该数据库中所对应的参数列表param_list;查询模块32,用于在上述存储过程的类型为更新表格类型且上述存储过程所要更新的表的主键不为空时,采用上述数据库接口查询出上述主键的数据列表datalist_org;循环执行模块34,用于循环执行参数列表param_list,如果传入参数中有待填充参数,则将上述传入参数填充到新建的空数组datalist_dest中,如果传入参数中没有上述待填充参数,则将从上述数据库数据列表中查询出来的数据填充到上述空数组datalist_dest中,如果传入参数和数据列表datalist_org中均没有待填充参数,则将待填充参数复制为空字符串填充到上述空数组datalist_dest中;调用模块36,用于使用填充完的数组datalist_dest作为传入参数来调用存储过程。
采用图3所示的装置,开发人员不用关心存储过程参数的顺序,也不用关心如果是更新数据库表的话,需要传入全部信息这个问题,可简化程序调用存储过程的方案,使程序开发人员调用存储更为方便。
优选地,上述参数列表param_list包括按照顺序排列好的多个参数。
优选地,如图4所示,该装置还可以包括:判断模块38,与获取模块30相连接,用于根据上述存储过程的命名的全部或部分字段判断存储过程的类型是否为更新表格类型;确定模块40,连接于判断模块38与查询模块32之间,用于在上述命名的全部或部分字段包括预定字段时,确定上述存储过程的类型为更新表格类型。
优选地,如图4所示,上述判断模块38可以进一步包括:判断单元380,用于判断上述存储过程的命名的后缀是否是“_upd”字段;上述确定模块40可以进一步包括:确定单元400,用于在上述存储过程的命名的后缀是“_upd”字段时,确定上述存储过程的类型为更新表格类型。
优选地,如图4所示,上述装置还可以包括:建立模块42,连接于查询模块32与循环执行模块34之间,用于建立上述空数组datalist_dest。
综上所述,借助本发明提供的上述实施例,调用存储前,先拉取该存储过程的调用参数,按照顺序,根据用户所要传入数据,和数据库中原有的数据列表来填充存储参数,这时调用存储就能保证存储参数的有效性和顺序了。采用本发明技术方案,可以让开发人员简化调用存储过程的方法,减少重复而大量的劳动。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (10)

1.一种调用数据库存储过程的方法,其特征在于,包括:
调用数据库接口,获取待调用的存储过程在该数据库中所对应的参数列表param_list;
在所述存储过程的类型为更新表格类型且所述存储过程所要更新的表的主键不为空时,采用所述数据库接口查询出所述主键的数据列表datalist_org;
循环执行参数列表param_list,如果调用者传入的参数中有待填充参数,则将所述调用者传入的参数填充到新建的空数组datalist_dest中,如果调用者传入的参数中没有所述待填充参数,则将从所述数据库数据列表中查询出来的数据填充到所述空数组datalist_dest中,如果调用者传入的参数和数据列表datalist_org中均没有待填充参数,则将待填充参数复制为空字符串填充到所述空数组datalist_dest中;
使用填充完的数组datalist_dest作为传入参数来调用存储过程。
2.根据权利要求1所述的方法,其特征在于,所述参数列表param_list包括按照顺序排列好的多个参数。
3.根据权利要求1所述的方法,其特征在于,采用所述数据库接口查询出所述主键的数据列表datalist_org之前,还包括:
根据所述存储过程的命名的全部或部分字段判断存储过程的类型是否为更新表格类型;
在所述命名的全部或部分字段包括预定字段时,确定所述存储过程的类型为更新表格类型。
4.根据权利要求3所述的方法,其特征在于,根据所述存储过程的命名的全部或部分字段判断存储过程的类型是否为更新表格类型,在所述命名的全部或部分字段包括预定字段时,确定所述存储过程的类型为更新表格类型包括:
判断所述存储过程的命名的后缀是否是“_upd”字段;
在所述存储过程的命名的后缀是“_upd”字段时,确定所述存储过程的类型为更新表格类型。
5.根据权利要求1所述的方法,其特征在于,在循环执行参数列表param_list之前,还包括:新建所述空数组datalist_dest。
6.一种调用数据库存储过程的装置,其特征在于,包括:
获取模块,用于调用数据库接口,获取待调用的存储过程在该数据库中所对应的参数列表param_list;
查询模块,用于在所述存储过程的类型为更新表格类型且所述存储过程所要更新的表的主键不为空时,采用所述数据库接口查询出所述主键的数据列表datalist_org;
循环执行模块,用于循环执行参数列表param_list,如果调用者传入的参数中有待填充参数,则将所述调用者传入的参数填充到新建的空数组datalist_dest中,如果调用者传入的参数中没有所述待填充参数,则将从所述数据库数据列表中查询出来的数据填充到所述空数组datalist_dest中,如果调用者传入的参数和数据列表datalist_org中均没有待填充参数,则将待填充参数复制为空字符串填充到所述空数组datalist_dest中;
调用模块,用于使用填充完的数组datalist_dest作为传入参数来调用存储过程。
7.根据权利要求6所述的装置,其特征在于,所述参数列表param_list包括按照顺序排列好的多个参数。
8.根据权利要求6所述的装置,其特征在于,还包括:
判断模块,用于根据所述存储过程的命名的全部或部分字段判断存储过程的类型是否为更新表格类型;
确定模块,用于在所述命名的全部或部分字段包括预定字段时,确定所述存储过程的类型为更新表格类型。
9.根据权利要求8所述的装置,其特征在于,
所述判断模块包括:判断单元,用于判断所述存储过程的命名的后缀是否是“_upd”字段;
所述确定模块包括:确定单元,用于在所述存储过程的命名的后缀是“_upd”字段时,确定所述存储过程的类型为更新表格类型。
10.根据权利要求6所述的装置,其特征在于,还包括:建立模块,用于建立所述空数组datalist_dest。
CN201610888153.3A 2016-08-04 2016-10-12 调用数据库存储过程的方法及装置 Active CN106547835B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2016106323000 2016-08-04
CN201610632300 2016-08-04

Publications (2)

Publication Number Publication Date
CN106547835A CN106547835A (zh) 2017-03-29
CN106547835B true CN106547835B (zh) 2019-12-17

Family

ID=58368627

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610888153.3A Active CN106547835B (zh) 2016-08-04 2016-10-12 调用数据库存储过程的方法及装置

Country Status (1)

Country Link
CN (1) CN106547835B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109063044B (zh) * 2018-07-18 2023-04-18 平安科技(深圳)有限公司 数据库表的参数插入方法、装置、终端设备及存储介质
CN109299103B (zh) * 2018-10-23 2022-02-18 贵阳朗玛信息技术股份有限公司 一种数据库存储过程入参系统和方法
CN112612848B (zh) * 2020-12-17 2023-05-02 四川虹微技术有限公司 数据实时同步的方法及装置、系统、电子设备、存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1588369A (zh) * 2004-09-06 2005-03-02 杭州恒生电子股份有限公司 一种关系型数据库系统及其查询和报表方法
CN101004758A (zh) * 2007-01-26 2007-07-25 华为技术有限公司 生成和获取报表的方法及相应的系统
CN101233460A (zh) * 2005-08-01 2008-07-30 丰田自动车株式会社 机器人控制系统和用于机器人的控制方法
CN103530327A (zh) * 2013-09-25 2014-01-22 清华大学深圳研究生院 一种从非关系型数据库到关系型数据库的数据迁移方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020016814A1 (en) * 2000-08-07 2002-02-07 International Business Machines Corporation Method, system, and program for invoking stored procedures and accessing stored procedure data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1588369A (zh) * 2004-09-06 2005-03-02 杭州恒生电子股份有限公司 一种关系型数据库系统及其查询和报表方法
CN101233460A (zh) * 2005-08-01 2008-07-30 丰田自动车株式会社 机器人控制系统和用于机器人的控制方法
CN101004758A (zh) * 2007-01-26 2007-07-25 华为技术有限公司 生成和获取报表的方法及相应的系统
CN103530327A (zh) * 2013-09-25 2014-01-22 清华大学深圳研究生院 一种从非关系型数据库到关系型数据库的数据迁移方法

Also Published As

Publication number Publication date
CN106547835A (zh) 2017-03-29

Similar Documents

Publication Publication Date Title
US11036754B2 (en) Database table conversion
CN106844643A (zh) 一种基于模板引擎的数据库动态生成方法
CN106547835B (zh) 调用数据库存储过程的方法及装置
CN107704382B (zh) 面向Python的函数调用路径生成方法和系统
US20170161291A1 (en) Database table conversion
CN103049251B (zh) 一种数据库持久层装置及数据库操作方法
CN104965735A (zh) 用于生成升级sql脚本的装置
CN102841841A (zh) 一种测试中的断言处理方法及系统
JP6421249B2 (ja) デバッグを支援する方法及び計算機システム
CN113204571B (zh) 涉及写入操作的sql执行方法、装置及存储介质
CN111880777A (zh) 程序信息下发方法、装置、电子设备
CN105354073A (zh) 一种基于安卓系统的单机应用网络化方法和系统
CN111177182A (zh) 数据查询方法和装置、存储介质和电子设备
CN112286557B (zh) 一种非覆盖式更新代码内容的方法和装置
CN109558159A (zh) 游戏中用户界面的更新方法和装置
CN111131373B (zh) 呼吸机数据同步系统、方法、装置及存储介质
CN111240681A (zh) 一种不同编程语言的转换方法及装置
CN115617594B (zh) 用于生成激励信息的方法、装置、存储介质及程序产品
CN110955712A (zh) 基于多数据源的开发api处理方法及装置
CN115114325B (zh) 数据查询方法、装置、电子设备以及存储介质
CN107506474B (zh) 基于对象映射的数据库操作方法及装置
CN112395284A (zh) 数据处理方法、装置、数据库系统、电子设备及存储介质
CN103677846A (zh) 一种SQLite数据库开发工具包及开发方法
CN104199675A (zh) 一种基于数据库参数利用的系统快速开发的系统
CN109918300B (zh) 一种测试数据准备方法、装置、终端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant