CN117632307A - 存储过程的调用方法、装置、电子设备及存储介质 - Google Patents
存储过程的调用方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117632307A CN117632307A CN202311552805.2A CN202311552805A CN117632307A CN 117632307 A CN117632307 A CN 117632307A CN 202311552805 A CN202311552805 A CN 202311552805A CN 117632307 A CN117632307 A CN 117632307A
- Authority
- CN
- China
- Prior art keywords
- storage process
- parameter
- target
- target storage
- access request
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 504
- 230000008569 process Effects 0.000 claims abstract description 321
- 230000003993 interaction Effects 0.000 claims abstract description 14
- 238000012545 processing Methods 0.000 claims description 20
- 238000001514 detection method Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 6
- 238000011161 development Methods 0.000 abstract description 10
- 230000009466 transformation Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 101100340271 Caenorhabditis elegans ida-1 gene Proteins 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 2
- 244000046052 Phaseolus vulgaris Species 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种存储过程的调用方法、装置、电子设备及存储介质,涉及大数据技术领域及其他相关技术领域。其中,该方法包括:通过目标组件接收应用程序的作业访问请求,其中,作业访问请求用于请求与目标存储过程进行数据交互,目标存储过程为用于实现目标功能的一组数据库命令;检测目标存储过程是否为具有参数的存储过程;在目标存储过程为具有参数的存储过程的情况下,根据目标存储过程中的参数所对应的参数类型确定参数注册方式;依据参数注册方式对目标存储过程中的参数进行注册,并在注册成功之后执行目标存储过程。本申请解决了现有技术中在调用存储过程时需要对应用程序进行大量代码改造,导致的开发成本高的技术问题。
Description
技术领域
本申请涉及大数据技术领域以及其他相关技术领域,具体而言,涉及一种存储过程的调用方法、装置、电子设备及存储介质。
背景技术
随着IT架构转型的不断深化,在金融领域,越来越多的业务是基于开放平台及分布式批量架构完成业务研发工作的。
目前,传统的开发平台在设计应用程序时,为了满足应用程序能够调用存储过程的要求,通常需要对应用程序进行大量的代码改造,从而导致应用程序的开发成本较高的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种存储过程的调用方法、装置、电子设备及存储介质,以至少解决现有技术中在调用存储过程时需要对应用程序进行大量代码改造,导致的开发成本高的技术问题。
根据本申请实施例的一个方面,提供了一种存储过程的调用方法,包括:通过目标组件接收应用程序的作业访问请求,其中,作业访问请求用于请求与目标存储过程进行数据交互,目标存储过程为用于实现目标功能的一组数据库命令,目标组件为与应用程序相解耦的程序代码;检测目标存储过程是否为具有参数的存储过程;在目标存储过程为具有参数的存储过程的情况下,根据目标存储过程中的参数所对应的参数类型确定参数注册方式;依据参数注册方式对目标存储过程中的参数进行注册,并在注册成功之后执行目标存储过程。
可选地,存储过程的调用方法还包括:在接收应用程序的作业访问请求之后,检测作业访问请求中是否包含存储过程标识,其中,存储过程标识表征一个存储过程的唯一标识;在作业访问请求中包含存储过程标识的情况下,从N个预设的存储过程中确定与存储过程标识相对应的存储过程为目标存储过程;在作业访问请求中未包含存储过程标识的情况下,确定N个预设的存储过程中的第一存储过程为目标存储过程,其中,第一存储过程为与预设数据库相对应的存储过程。
可选地,存储过程的调用方法还包括:在接收应用程序的作业访问请求之后,检测作业访问请求是否满足预设条件,其中,预设条件用于表征正常状态下的作业访问请求对应的数据格式;在作业访问请求满足预设条件的情况下,确定作业访问请求为允许执行的作业访问请求;在作业访问请求不满足预设条件的情况下,确定作业访问请求为禁止执行的作业访问请求。
可选地,存储过程的调用方法还包括:检测目标存储过程对应的参数集合中是否为空值,其中,参数集合用于在目标存储过程为具有参数的存储过程时存储目标存储过程对应的每个参数值;在目标存储过程对应的参数集合中为空值的情况下,确定目标存储过程为不具有参数的存储过程;在目标存储过程对应的参数集合中为非空值的情况下,确定目标存储过程为具有参数的存储过程。
可选地,存储过程的调用方法还包括:在检测目标存储过程是否为具有参数的存储过程之后,将目标存储过程与目标存储过程相对应的目标数据库建立数据连接;对目标存储过程进行预编译操作,其中,预编译操作用于将目标存储过程编译为目标数据库能够正确执行的命令。
可选地,参数类型至少包括入参类型、出参类型,入参类型的参数用于更新数据库中的至少一个数据,出参类型的参数用于处理数据库中的至少一个数据,并返回处理结果,其中,入参类型的参数所对应的参数注册方式与出参类型的参数所对应的参数注册方式不同。
可选地,存储过程的调用方法还包括:在依据参数注册方式对目标存储过程中的参数进行注册,并在注册成功之后执行目标存储过程之后,在目标存储过程中存在出参类型的参数的情况下,在执行结束目标存储过程之后,获取出参类型的参数所对应的返回参数值。
根据本申请的另一方面,还提供了一种存储过程的调用装置,其中,包括:接收单元,用于通过目标组件接收应用程序的作业访问请求,其中,作业访问请求用于请求与目标存储过程进行数据交互,目标存储过程为用于实现目标功能的一组数据库命令,目标组件为与应用程序相解耦的程序代码;检测单元,用于检测目标存储过程是否为具有参数的存储过程;确定单元,用于在目标存储过程为具有参数的存储过程的情况下,根据目标存储过程中的参数所对应的参数类型确定参数注册方式;执行单元,用于依据参数注册方式对目标存储过程中的参数进行注册,并在注册成功之后执行目标存储过程。
可选地,存储过程的调用装置还包括:第一检测单元、第一确定单元以及第二确定单元。其中,第一检测单元,用于检测作业访问请求中是否包含存储过程标识,其中,存储过程标识表征一个存储过程的唯一标识;第一确定单元,用于在作业访问请求中包含存储过程标识的情况下,从N个预设的存储过程中确定与存储过程标识相对应的存储过程为目标存储过程;第二确定单元,用于在作业访问请求中未包含存储过程标识的情况下,确定N个预设的存储过程中的第一存储过程为目标存储过程,其中,第一存储过程为与预设数据库相对应的存储过程。
可选地,存储过程的调用装置还包括:第二检测单元、第三确定单元以及第四确定单元。其中,第二检测单元,用于检测作业访问请求是否满足预设条件,其中,预设条件用于表征正常状态下的作业访问请求对应的数据格式;第三确定单元,用于在作业访问请求满足预设条件的情况下,确定作业访问请求为允许执行的作业访问请求;第四确定单元,用于在作业访问请求不满足预设条件的情况下,确定作业访问请求为禁止执行的作业访问请求。
可选地,检测单元,包括:第一检测子单元、第一确定子单元以及第二确定子单元。其中,第一检测子单元,用于检测目标存储过程对应的参数集合中是否为空值,其中,参数集合用于在目标存储过程为具有参数的存储过程时存储目标存储过程对应的每个参数值;第一确定子单元,用于在目标存储过程对应的参数集合中为空值的情况下,确定目标存储过程为不具有参数的存储过程;第二确定子单元,用于在目标存储过程对应的参数集合中为非空值的情况下,确定目标存储过程为具有参数的存储过程。
可选地,存储过程的调用装置还包括:数据连接单元以及预编译操作单元。其中,数据连接单元,用于将目标存储过程与目标存储过程相对应的目标数据库建立数据连接;预编译操作单元,用于对目标存储过程进行预编译操作,其中,预编译操作用于将目标存储过程编译为目标数据库能够正确执行的命令。
可选地,参数类型至少包括入参类型、出参类型,入参类型的参数用于更新数据库中的至少一个数据,出参类型的参数用于处理数据库中的至少一个数据,并返回处理结果,其中,入参类型的参数所对应的参数注册方式与出参类型的参数所对应的参数注册方式不同。
可选地,存储过程的调用装置还包括:获取单元,用于在目标存储过程中存在出参类型的参数的情况下,在执行结束目标存储过程之后,获取出参类型的参数所对应的返回参数值。
根据本申请的另一方面,还提供了一种计算机可读存储介质,其中,计算机可读存储介质中存储有计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行上述任意一项的存储过程的调用方法。
根据本申请的另一方面,还提供了一种电子设备,其中,电子设备包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述任意一项的存储过程的调用方法。
在本申请中,通过目标组件利用目标存储过程的参数实现对目标存储过程的调用的方式,首先通过目标组件接收应用程序的作业访问请求,其中,作业访问请求用于请求与目标存储过程进行数据交互,目标存储过程为用于实现目标功能的一组数据库命令,目标组件为与应用程序相解耦的程序代码。然后,检测目标存储过程是否为具有参数的存储过程,并在目标存储过程为具有参数的存储过程的情况下,根据目标存储过程中的参数所对应的参数类型确定参数注册方式。最后依据参数注册方式对目标存储过程中的参数进行注册,并在注册成功之后执行目标存储过程。
由上述内容可知,本申请通过提供一种与应用程序相解耦的目标组件来处理应用程序的作业访问请求,利用识别目标存储过程中参数即可完成目标存储过程的调用与执行,从而不仅避免了对应用程度的大量代码改造,实现了节约开发成本的技术效果,而且还实现了目标组件与应用程序的解耦,从而一个目标组件可以服务于多个应用程序,提高了应用程序的独立性,可以更方便地对目标组件以及应用程序进行维护。
由此可见,通过本申请的技术方案,提供了一种目标组件,从而仅需输入简单参数即可完成存储过程的调用,进而解决了现有技术中在调用存储过程时需要对应用程序进行大量代码改造,导致的开发成本高的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种可选的存储过程的调用方法的流程图;
图2是根据本申请实施例的一种可选的存储过程的调用方法的流程图;
图3是根据本申请实施例提供的一种可选的存储过程的调用装置的示意图;
图4是根据本申请实施例提供的一种电子设备的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本申请实施例,提供了一种存储过程的调用方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本申请实施例的一种可选的存储过程的调用方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101,通过目标组件接收应用程序的作业访问请求。
在步骤S101中,作业访问请求用于请求与目标存储过程进行数据交互,目标存储过程为用于实现目标功能的一组数据库命令,目标组件为与应用程序相解耦的程序代码。
可选地,目标组件也可以称为一种存储过程的调用工具,其中,目标组件为一种能够与分布式批量框架平台、以及至少一个应用程序进行数据交互的程序。
以下为本申请实施例中所涉及的分布式批量框架平台的具体说明。分布式批量框架主要为各个应用程序提供任务调度功能,主要节点包括:控制器(controller)、运维控制台(console)、注册中心(zookeeper)、数据库(msyql)以及应用执行器(executor)等。其中,应用执行器(executor)即为本申请实施例中的目标组件。
可选地,批量控制器,用于在分布式批量框架平台中进行作业调度、作业执行流程控制、资源管理等操作。运维控制台,主要用于展现作业调度情况、作业执行进度等信息,运维人员可以通过运维控制台进行调整批量参数等操作。数据库,用于存储分布是批量框架平台的元数据以及各个应用的排程、作业定义、作业执行情况等信息。注册中心,用于负责控制器、应用执行器的注册、批量任务消息传递、参数配置等操作,批量执行器是各应用程序的节点,用于接收控制器发出的调度指令,并执行作业程序。
需要说明的是,本申请中的应用程序可以是各种需要和分布式批量框架平台进行数据交互的应用程序,例如,金融领域中常见的转账类应用程序,贷款类应用程序等等。
还需要说明的是,存储过程为实现某种特定功能的一组数据库命令,在本申请中,目标存储过程为用于实现目标功能的一组数据库命令。
步骤S102,检测目标存储过程是否为具有参数的存储过程。
在步骤S102中,目标组件依据应用程序的作业访问请求可以确定应用程序想要进行数据交互的目标存储过程,例如,存储过程A。其中,任何一个存储过程都可以区分为是具有参数的存储过程,或者是不具有参数的存储过程。
需要说明的是,具有参数的存储过程可以进一步分为是入参类型的存储过程、出参类型的存储过程、出入参类型的存储过程,其中,入参类型的存储过程表征该存储过程中的参数为入参参数,入参参数用于更新数据库中的至少一个数据,例如,在数据库中修改一个数据、***一个数据或者删除一个数据。出参类型的存储过程表征该存储过程中的参数为出参参数,出参参数用于处理数据库中的至少一个数据,并返回处理结果,例如,查询数据库中特定的一个数据,并将该数据返回给目标组件或者应用程序。出入参类型的存储过程表征该存储过程中的参数既包括入参参数,也包括出参参数。
步骤S103,在目标存储过程为具有参数的存储过程的情况下,根据目标存储过程中的参数所对应的参数类型确定参数注册方式。
可选地,不同的参数类型对应不同的参数注册方式,例如,入参参数对应的参数注册方式为第一注册方式,出参参数对应的参数注册方式为第二注册方式。
步骤S104,依据参数注册方式对目标存储过程中的参数进行注册,并在注册成功之后执行目标存储过程。
可选地,目标组件依据目标存储过程中的每个参数所对应的参数注册方式对每个参数进行注册,即在注册中心进行注册,在注册成功之后,目标组件实现对目标存储过程的调用。需要说明的是,如果参数注册失败,则目标组件将生成目标存储过程调用失败的提示信息。
基于上述步骤S101至步骤S104的内容可知。在本申请中,通过目标组件利用目标存储过程的参数实现对目标存储过程的调用的方式,首先通过目标组件接收应用程序的作业访问请求,其中,作业访问请求用于请求与目标存储过程进行数据交互,目标存储过程为用于实现目标功能的一组数据库命令,目标组件为与应用程序相解耦的程序代码。然后,检测目标存储过程是否为具有参数的存储过程,并在目标存储过程为具有参数的存储过程的情况下,根据目标存储过程中的参数所对应的参数类型确定参数注册方式。最后依据参数注册方式对目标存储过程中的参数进行注册,并在注册成功之后执行目标存储过程。
由上述内容可知,本申请通过提供一种与应用程序相解耦的目标组件来处理应用程序的作业访问请求,利用识别目标存储过程中参数即可完成目标存储过程的调用与执行,从而不仅避免了对应用程度的大量代码改造,实现了节约开发成本的技术效果,而且还实现了目标组件与应用程序的解耦,从而一个目标组件可以服务于多个应用程序,提高了应用程序的独立性,可以更方便地对目标组件以及应用程序进行维护。
由此可见,通过本申请的技术方案,提供了一种目标组件,从而仅需输入简单参数即可完成存储过程的调用,进而解决了现有技术中在调用存储过程时需要对应用程序进行大量代码改造,导致的开发成本高的技术问题。
在一种可选的实施例中,在接收应用程序的作业访问请求之后,目标组件检测作业访问请求中是否包含存储过程标识,其中,存储过程标识表征一个存储过程的唯一标识。在作业访问请求中包含存储过程标识的情况下,目标组件从N个预设的存储过程中确定与存储过程标识相对应的存储过程为目标存储过程;在作业访问请求中未包含存储过程标识的情况下,目标组件确定N个预设的存储过程中的第一存储过程为目标存储过程,其中,第一存储过程为与预设数据库相对应的存储过程。
可选地,图2是根据本申请实施例的一种可选的存储过程的调用方法的流程图,如图2所示,在目标组件接收到作业访问请求之后,目标组件通过检测作业访问请求中是否包含存储过程标识的方式,判断发送作业访问请求的应用程序是否请求与特定的存储过程进行交互。例如,如果作业访问请求中包含有存储过程标识“IDA-1”,则目标组件确定发送该作业访问请求的应用程序请求与特定的存储过程IDA-1进行数据交互,因此,目标组件会将存储过程IDA-1作为目标存储过程。
另外,如果作业访问请求中不包含有任何的存储过程标识,则目标组件将N个预设的存储过程中的第一存储过程作为与应用程序默认交互的目标存储过程,例如,目标组件将N个预设的存储过程中的存储过程IDA-2作为第一存储过程,任何一个不包含存储过程标识的作业访问请求均会被分配给存储过程IDA-2进行处理。
在一种可选的实施例中,在接收应用程序的作业访问请求之后,目标组件还会检测作业访问请求是否满足预设条件,其中,预设条件用于表征正常状态下的作业访问请求对应的数据格式。在作业访问请求满足预设条件的情况下,目标组件确定作业访问请求为允许执行的作业访问请求;在作业访问请求不满足预设条件的情况下,目标组件确定作业访问请求为禁止执行的作业访问请求。
可选地,如图2所示,目标组件还会检测作业访问请求是否满足预设条件,其中,预设条件也可以称为数据合规性校验条件,其中,预设条件用于表征正常状态下的作业访问请求对应的数据格式,例如,命名格式,字段长度范围,是否包含禁止出现的字符等等。
可选地,如果作业访问请求满足预设条件,则目标组件确定作业访问请求为允许执行的作业访问请求,如果作业访问请求不满足预设条件,则目标组件确定作业访问请求为禁止执行的作业访问请求。
在一种可选的实施例中,为了检测目标存储过程是否为具有参数的存储过程,目标组件可以检测目标存储过程对应的参数集合中是否为空值,其中,参数集合用于在目标存储过程为具有参数的存储过程时存储目标存储过程对应的每个参数值。在目标存储过程对应的参数集合中为空值的情况下,目标组件确定目标存储过程为不具有参数的存储过程;在目标存储过程对应的参数集合中为非空值的情况下,目标组件确定目标存储过程为具有参数的存储过程。
可选地,如果存储过程中包含有参数,则参数会被封装为一个java对象(StoredProcedure Data),其中,该java对象包括本次需要调用的目标存储过程的名称、目标存储过程对应的参数集合(stored Procedure Params)、目标存储过程对应的调用类型(excuteType)、目标存储过程对应的执行结果(result)。
其中,目标存储过程对应的参数集合至少包括以下信息:目标存储过程包含的参数对象,目标存储过程所包含的每个参数的参数类型(type),目标存储过程所包含的每个参数的参数值以及目标存储过程对应的参数数据库字段类型(parameter Type)。
需要说明的是,如果目标组件检测到目标存储过程对应的参数集合中为非空值,则目标组件可以确定目标存储过程为具有参数的存储过程,如果目标组件检测到目标存储过程对应的参数集合中为空值,则目标组件可以确定目标存储过程为不具有参数的存储过程。
在一种可选的实施例中,在检测目标存储过程是否为具有参数的存储过程之后,目标组件将目标存储过程与目标存储过程相对应的目标数据库建立数据连接,并对目标存储过程进行预编译操作,其中,预编译操作用于将目标存储过程编译为目标数据库能够正确执行的命令。
可选地,如图2所示,无论检测到目标存储过程是具有参数的存储过程,还是检测到目标存储过程是不具有存储的存储过程,目标组件都会将目标存储过程与相对应的目标数据库建立数据连接,然后通过对目标存储过程进行预编译操作,使得目标存储过程能够被目标数据库识别并且正确执行。
在一种可选的实施例中,参数类型至少包括入参类型、出参类型,入参类型的参数用于更新数据库中的至少一个数据,出参类型的参数用于处理数据库中的至少一个数据,并返回处理结果,其中,入参类型的参数所对应的参数注册方式与出参类型的参数所对应的参数注册方式不同。
可选地,具有参数的存储过程可以进一步分为是入参类型的存储过程、出参类型的存储过程、出入参类型的存储过程,其中,入参类型的存储过程表征该存储过程中的参数为入参参数,入参参数用于更新数据库中的至少一个数据,例如,在数据库中修改一个数据、***一个数据或者删除一个数据。出参类型的存储过程表征该存储过程中的参数为出参参数,出参参数用于处理数据库中的至少一个数据,并返回处理结果,例如,查询数据库中特定的一个数据,并将该数据返回给目标组件或者应用程序。出入参类型的存储过程表征该存储过程中的参数既包括入参参数,也包括出参参数。
在一种可选的实施例中,在目标存储过程中存在出参类型的参数的情况下,在执行结束目标存储过程之后,目标组件获取出参类型的参数所对应的返回参数值。
可选地,如图2所示,在目标组件根据目标存储过程中的每个参数对应的参数类型确定该参数对应的参数注册方式,并且基于每个参数对应的参数注册方式在注册中心对每个参数注册成功之后,如果目标存储过程中不包含出参类型的参数,则目标组件可以在执行结束目标存储过程之后,继续处理应用程序的下一个作业访问请求。如果目标存储过程中包含有出参类型的参数,则目标组件在执行结束目标存储过程之后,将获取出参类型的参数所对应的返回参数值,并根据返回参数值继续处理应用程序的下一个作业访问请求。
需要说明的是,如图2所示,如果目标存储过程为不具有参数的存储过程,则目标组件在对目标存储过程进行预编译之后,可以直接执行目标存储过程,然后结束本次目标存储过程的调用。
可选地,本申请的核心逻辑主要是在Abstract Call Stored ProcedureProcessor基类中,其中,该基类为分布式批量框架平台提供的一种用于调用存储过程的基类,并非是对象,这个类是调用存储过程的整个逻辑的核心实现。
可选地,应用程序可以在自身的代码逻辑中,实现调用存储过程对应的核心基类,重写main Process方法,在main Process方法中给定调用存储过程的的入参,即最终实现可通过目标组件自动调用存储过程的目的,不需要提前了解存储过程的内部实现内容,数据源(即存储过程对应的数据库)通过连接池进行管理,也不需要管理人员人工地进行应用程序的回收连接。
目前可支持应用自定义调用存过、支持应用选择数据源调用存过,同样也支持返回出参继续业务逻辑,内置调用有参存过、调用无参存过接口针对不同的场景皆有良好的适用范围。
在一种可选的实施例中,分布式批量框架平台提供了以下两种调用存储过程的方式:
第一种是对于不需要存储过程返回参数的场景,可直接通过配置spring Bean的两种方式,xml或在@Configuration标记的注解类下实现Bean对象,目标组件启动时会自动加载分布式批量框架平台中提前实现的Common Call Stored Procedure Processor基类到内存中,从而实现简易调用存储过程的目的。这种方式可以自行实现调用存储过程的作业类、不需要编写作业的相关代码,通过复用spring加载机制,无需应用程序与分布式批量框架平台之间进行深入的数据交互。
第二种是对于需要存储过程返回参数值继续业务处理的场景,可通过编写作业继承框架提前保留的作业基类Abstract Call Stored Procedure Processor,设置要调用的存储过程的数据源以及要调用的存储过程所对应的数据对象Stored Procedure Data,从而即可实现调用存储过程的目的。其中,存储过程执行完成之后会返回值List<Object>对象集合,应用程序可根据业务逻辑自行解析,这种方式适用于在调用存储过程后依赖于存储过程处理后的数据进行后续操作的场景。
由上述内容可知,本申请通过提供一种与应用程序相解耦的目标组件来处理应用程序的作业访问请求,利用识别目标存储过程中参数即可完成目标存储过程的调用与执行,从而不仅避免了对应用程度的大量代码改造,实现了节约开发成本的技术效果,而且还实现了目标组件与应用程序的解耦,从而一个目标组件可以服务于多个应用程序,提高了应用程序的独立性,可以更方便地对目标组件以及应用程序进行维护。
由此可见,通过本申请的技术方案,提供了一种目标组件,从而仅需输入简单参数即可完成存储过程的调用,进而解决了现有技术中在调用存储过程时需要对应用程序进行大量代码改造,导致的开发成本高的技术问题。
实施例2
本实施例提供了一种可选的存储过程的调用装置,该存储过程的调用装置中的各个实施单元对应于实施例1中各个实施步骤。
图3是根据本申请实施例提供的一种可选的存储过程的调用装置的示意图,如图3所示,包括:接收单元301、检测单元302、确定单元303以及执行单元304。
其中,接收单元301,用于通过目标组件接收应用程序的作业访问请求,其中,作业访问请求用于请求与目标存储过程进行数据交互,目标存储过程为用于实现目标功能的一组数据库命令,目标组件为与应用程序相解耦的程序代码;检测单元302,用于检测目标存储过程是否为具有参数的存储过程;确定单元303,用于在目标存储过程为具有参数的存储过程的情况下,根据目标存储过程中的参数所对应的参数类型确定参数注册方式;执行单元304,用于依据参数注册方式对目标存储过程中的参数进行注册,并在注册成功之后执行目标存储过程。
可选地,存储过程的调用装置还包括:第一检测单元、第一确定单元以及第二确定单元。其中,第一检测单元,用于检测作业访问请求中是否包含存储过程标识,其中,存储过程标识表征一个存储过程的唯一标识;第一确定单元,用于在作业访问请求中包含存储过程标识的情况下,从N个预设的存储过程中确定与存储过程标识相对应的存储过程为目标存储过程;第二确定单元,用于在作业访问请求中未包含存储过程标识的情况下,确定N个预设的存储过程中的第一存储过程为目标存储过程,其中,第一存储过程为与预设数据库相对应的存储过程。
可选地,存储过程的调用装置还包括:第二检测单元、第三确定单元以及第四确定单元。其中,第二检测单元,用于检测作业访问请求是否满足预设条件,其中,预设条件用于表征正常状态下的作业访问请求对应的数据格式;第三确定单元,用于在作业访问请求满足预设条件的情况下,确定作业访问请求为允许执行的作业访问请求;第四确定单元,用于在作业访问请求不满足预设条件的情况下,确定作业访问请求为禁止执行的作业访问请求。
可选地,检测单元302,包括:第一检测子单元、第一确定子单元以及第二确定子单元。其中,第一检测子单元,用于检测目标存储过程对应的参数集合中是否为空值,其中,参数集合用于在目标存储过程为具有参数的存储过程时存储目标存储过程对应的每个参数值;第一确定子单元,用于在目标存储过程对应的参数集合中为空值的情况下,确定目标存储过程为不具有参数的存储过程;第二确定子单元,用于在目标存储过程对应的参数集合中为非空值的情况下,确定目标存储过程为具有参数的存储过程。
可选地,存储过程的调用装置还包括:数据连接单元以及预编译操作单元。其中,数据连接单元,用于将目标存储过程与目标存储过程相对应的目标数据库建立数据连接;预编译操作单元,用于对目标存储过程进行预编译操作,其中,预编译操作用于将目标存储过程编译为目标数据库能够正确执行的命令。
可选地,参数类型至少包括入参类型、出参类型,入参类型的参数用于更新数据库中的至少一个数据,出参类型的参数用于处理数据库中的至少一个数据,并返回处理结果,其中,入参类型的参数所对应的参数注册方式与出参类型的参数所对应的参数注册方式不同。
可选地,存储过程的调用装置还包括:获取单元,用于在目标存储过程中存在出参类型的参数的情况下,在执行结束目标存储过程之后,获取出参类型的参数所对应的返回参数值。
实施例3
根据本申请实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行上述实施例1中的存储过程的调用方法。
实施例4
根据本申请实施例的另一方面,还提供了一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行上述实施例1中的存储过程的调用方法。
图4是根据本申请实施例提供的一种电子设备的示意图,如图4所示,本申请实施例提供了一种电子设备,电子设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现上述实施例1中的存储过程的调用方法。
可选地,处理器执行程序时实现以下步骤:
通过目标组件接收应用程序的作业访问请求,其中,作业访问请求用于请求与目标存储过程进行数据交互,目标存储过程为用于实现目标功能的一组数据库命令,目标组件为与应用程序相解耦的程序代码;检测目标存储过程是否为具有参数的存储过程;在目标存储过程为具有参数的存储过程的情况下,根据目标存储过程中的参数所对应的参数类型确定参数注册方式;依据参数注册方式对目标存储过程中的参数进行注册,并在注册成功之后执行目标存储过程。
可选地,处理器执行程序时还实现以下步骤:在接收应用程序的作业访问请求之后,检测作业访问请求中是否包含存储过程标识,其中,存储过程标识表征一个存储过程的唯一标识;在作业访问请求中包含存储过程标识的情况下,从N个预设的存储过程中确定与存储过程标识相对应的存储过程为目标存储过程;在作业访问请求中未包含存储过程标识的情况下,确定N个预设的存储过程中的第一存储过程为目标存储过程,其中,第一存储过程为与预设数据库相对应的存储过程。
可选地,处理器执行程序时还实现以下步骤:在接收应用程序的作业访问请求之后,检测作业访问请求是否满足预设条件,其中,预设条件用于表征正常状态下的作业访问请求对应的数据格式;在作业访问请求满足预设条件的情况下,确定作业访问请求为允许执行的作业访问请求;在作业访问请求不满足预设条件的情况下,确定作业访问请求为禁止执行的作业访问请求。
可选地,处理器执行程序时还实现以下步骤:检测目标存储过程对应的参数集合中是否为空值,其中,参数集合用于在目标存储过程为具有参数的存储过程时存储目标存储过程对应的每个参数值;在目标存储过程对应的参数集合中为空值的情况下,确定目标存储过程为不具有参数的存储过程;在目标存储过程对应的参数集合中为非空值的情况下,确定目标存储过程为具有参数的存储过程。
可选地,处理器执行程序时还实现以下步骤:在检测目标存储过程是否为具有参数的存储过程之后,将目标存储过程与目标存储过程相对应的目标数据库建立数据连接;对目标存储过程进行预编译操作,其中,预编译操作用于将目标存储过程编译为目标数据库能够正确执行的命令。
可选地,参数类型至少包括入参类型、出参类型,入参类型的参数用于更新数据库中的至少一个数据,出参类型的参数用于处理数据库中的至少一个数据,并返回处理结果,其中,入参类型的参数所对应的参数注册方式与出参类型的参数所对应的参数注册方式不同。
可选地,处理器执行程序时还实现以下步骤:在依据参数注册方式对目标存储过程中的参数进行注册,并在注册成功之后执行目标存储过程之后,在目标存储过程中存在出参类型的参数的情况下,在执行结束目标存储过程之后,获取出参类型的参数所对应的返回参数值。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种存储过程的调用方法,其特征在于,包括:
通过目标组件接收应用程序的作业访问请求,其中,所述作业访问请求用于请求与目标存储过程进行数据交互,所述目标存储过程为用于实现目标功能的一组数据库命令,所述目标组件为与所述应用程序相解耦的程序代码;
检测所述目标存储过程是否为具有参数的存储过程;
在所述目标存储过程为具有参数的存储过程的情况下,根据所述目标存储过程中的参数所对应的参数类型确定参数注册方式;
依据所述参数注册方式对所述目标存储过程中的参数进行注册,并在注册成功之后执行所述目标存储过程。
2.根据权利要求1所述的存储过程的调用方法,其特征在于,在接收应用程序的作业访问请求之后,所述存储过程的调用方法还包括:
检测所述作业访问请求中是否包含存储过程标识,其中,所述存储过程标识表征一个存储过程的唯一标识;
在所述作业访问请求中包含所述存储过程标识的情况下,从N个预设的存储过程中确定与所述存储过程标识相对应的存储过程为所述目标存储过程;
在所述作业访问请求中未包含所述存储过程标识的情况下,确定所述N个预设的存储过程中的第一存储过程为所述目标存储过程,其中,所述第一存储过程为与预设数据库相对应的存储过程。
3.根据权利要求1所述的存储过程的调用方法,其特征在于,在接收应用程序的作业访问请求之后,所述存储过程的调用方法还包括:
检测所述作业访问请求是否满足预设条件,其中,所述预设条件用于表征正常状态下的作业访问请求对应的数据格式;
在所述作业访问请求满足所述预设条件的情况下,确定所述作业访问请求为允许执行的作业访问请求;
在所述作业访问请求不满足所述预设条件的情况下,确定所述作业访问请求为禁止执行的作业访问请求。
4.根据权利要求1所述的存储过程的调用方法,其特征在于,检测所述目标存储过程是否为具有参数的存储过程,包括:
检测所述目标存储过程对应的参数集合中是否为空值,其中,所述参数集合用于在所述目标存储过程为具有参数的存储过程时存储所述目标存储过程对应的每个参数值;
在所述目标存储过程对应的参数集合中为所述空值的情况下,确定所述目标存储过程为不具有参数的存储过程;
在所述目标存储过程对应的参数集合中为非空值的情况下,确定所述目标存储过程为具有参数的存储过程。
5.根据权利要求1所述的存储过程的调用方法,其特征在于,在检测所述目标存储过程是否为具有参数的存储过程之后,所述存储过程的调用方法还包括:
将所述目标存储过程与所述目标存储过程相对应的目标数据库建立数据连接;
对所述目标存储过程进行预编译操作,其中,所述预编译操作用于将所述目标存储过程编译为所述目标数据库能够正确执行的命令。
6.根据权利要求1所述的存储过程的调用方法,其特征在于,所述参数类型至少包括入参类型、出参类型,所述入参类型的参数用于更新数据库中的至少一个数据,所述出参类型的参数用于处理数据库中的至少一个数据,并返回处理结果,其中,所述入参类型的参数所对应的参数注册方式与所述出参类型的参数所对应的参数注册方式不同。
7.根据权利要求6所述的存储过程的调用方法,其特征在于,在依据所述参数注册方式对所述目标存储过程中的参数进行注册,并在注册成功之后执行所述目标存储过程之后,所述存储过程的调用方法还包括:
在所述目标存储过程中存在所述出参类型的参数的情况下,在执行结束所述目标存储过程之后,获取所述出参类型的参数所对应的返回参数值。
8.一种存储过程的调用装置,其特征在于,包括:
接收单元,用于通过目标组件接收应用程序的作业访问请求,其中,所述作业访问请求用于请求与目标存储过程进行数据交互,所述目标存储过程为用于实现目标功能的一组数据库命令,所述目标组件为与所述应用程序相解耦的程序代码;
检测单元,用于检测所述目标存储过程是否为具有参数的存储过程;
确定单元,用于在所述目标存储过程为具有参数的存储过程的情况下,根据所述目标存储过程中的参数所对应的参数类型确定参数注册方式;
执行单元,用于依据所述参数注册方式对所述目标存储过程中的参数进行注册,并在注册成功之后执行所述目标存储过程。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至7中任意一项所述的存储过程的调用方法。
10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的存储过程的调用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311552805.2A CN117632307A (zh) | 2023-11-20 | 2023-11-20 | 存储过程的调用方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311552805.2A CN117632307A (zh) | 2023-11-20 | 2023-11-20 | 存储过程的调用方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117632307A true CN117632307A (zh) | 2024-03-01 |
Family
ID=90024561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311552805.2A Pending CN117632307A (zh) | 2023-11-20 | 2023-11-20 | 存储过程的调用方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117632307A (zh) |
-
2023
- 2023-11-20 CN CN202311552805.2A patent/CN117632307A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111478961B (zh) | 多租户的服务调用方法及装置 | |
US5539909A (en) | Negotiation method for calling procedures located within other objects without knowledge of their calling syntax | |
US7925764B2 (en) | Method, apparatus and computer program product for integrating heterogeneous systems | |
US7661113B2 (en) | Method and system for data preparation and communication between software applications | |
CN108255708B (zh) | 测试环境中访问生产文件的方法、装置、存储介质及设备 | |
EP1906308A1 (en) | Method and system for managing by a controller a generic data lock to a data object | |
US10768974B2 (en) | Specifying an order of a plurality of resources in a transaction according to distance | |
JPH10124370A (ja) | データ管理装置 | |
CN108664343B (zh) | 一种微服务的有状态调用方法及装置 | |
CN112256351B (zh) | Feign组件的实现方法、微服务调用方法及装置 | |
EP0871118B1 (en) | Parallel data processing system and method of controlling such a system | |
CN109376072A (zh) | 基于第三方组件库的应用程序开发方法和装置 | |
CN112132530A (zh) | 可视化动态流程编排方法及*** | |
CN117632307A (zh) | 存储过程的调用方法、装置、电子设备及存储介质 | |
CN114115933A (zh) | 软件升级的方法、***、装置、电子设备及介质 | |
CN112214502A (zh) | 一种联盟链的用户合约部署方法、装置、***及存储介质 | |
CN112860398A (zh) | 基于规则引擎的数据处理方法、装置、设备及介质 | |
US6782534B1 (en) | Method and system for controlling program in information processing system | |
US20050155037A1 (en) | Systems and methods for providing a return value to an application program | |
CN113656095B (zh) | 配置数据的处理方法及装置 | |
CN111324368A (zh) | 一种数据共享方法及服务器 | |
CN116627814A (zh) | 业务处理方法、装置、存储介质及电子装置 | |
CN115495484A (zh) | 一种数据返回的方法、装置及介质 | |
CN116820503A (zh) | 应用商店更新方法、终端设备及计算机可读存储介质 | |
CN112925578A (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 |