首页> 中国专利> 调用存储过程和访问存储的过程数据的方法、系统以及程序

调用存储过程和访问存储的过程数据的方法、系统以及程序

摘要

本发明提供了一种使数据能够被存取的方法、系统和程序。从客户机接收调用以调用远程接口方法。响应调用的远程接口方法,利用远程接口实现存取所接收的调用的参数。利用存取的参数作为存储过程的输入参数,产生存储过程调用。将存储过程调用传送到由要执行的调用命名的存储过程。接收存储过程的输出,并将该输出插入返回客户机的数据对象。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-09-30

    专利权的终止(未缴年费专利权终止)

    专利权的终止(未缴年费专利权终止)

  • 2007-01-17

    授权

    授权

  • 2004-09-08

    实质审查的生效

    实质审查的生效

  • 2004-06-30

    公开

    公开

说明书

技术领域

本发明涉及用于调用存储过程和访问存储的过程数据的方法、系统以及程序。

背景技术

许多分布式应用程序是利用Java程序结构(Java是SunMiscrosystem,Inc的商标)编写的,其中一个系统上的客户机根据服务器应用程序通过诸如因特网的网络、局域网(LAN)等请求数据或操作。例如,国际商用机器公司(IBM)的WebSphere应用服务器(IBM和WebSphere是国际商用机器公司的商标)实现开放型分布式环境,其中诸如不同操作系统或不同程序语言等的不同平台上的各客户机应用程序可以与该服务器交互,或者互相交互(例如:诸如企业JavaBeans的部件可以通过同一个服务器互相对话,或者在各服务器之间互相对话)。

分布式应用程序的通用设计采用3个计算等级:客户机,与用户交互;应用服务器,例如WebSphere应用服务器,含有应用的商用逻辑;以及资源管理器,用于存储数据。在此模型中,客户机不必知道关于实际资源管理器的任何信息,例如正被访问的或对其进行修改的基础数据库。此外,该方法提高了安全性。只有服务器需要直接存取资源管理器控制的数据,而客户机不需要。客户机可以包括Java小应用程序、Visual Basic、C++以及在现有技术分布式应用程序结构中通常采用的其它客户机程序实现技术。

例如,客户机可以提供用户通过其可以输入产品的订单的表格。客户机将此订单信息发送到服务器,服务器检验产品数据库并执行进行记帐和发运需要完成的任务。一个服务器通常被多个客户机使用。例如,几十个或几百个客户机可以与控制数据库访问的少量服务器交互。服务器管理对数据库资源的访问,并同步对数据库资源的访问,而且利用数据或者利用状态信息响应客户机的请求。

电子商务应用程序开发者遇到的一个问题是,诸如遗留数据库存储过程的许多健壮数据库应用程序是利用编程语言编写的,并采用与通常使用的客户机结构,例如Java客户机、小应用程序等不兼容的数据输入和输出参数格式。

因为此原因,所以在本技术领域内需要提供一种使利用通用编程语言,例如Java、C++、Visual Basic等编写的客户机应用程序能够存取数据库存储过程所采集的数据的接口。

发明内容

因此,提供了一种使数据能够被存取的方法、系统和程序。从客户机接收调用以调用远程接口方法。响应调用的远程接口方法,利用远程接口实现存取所接收的调用的参数。利用存取的参数作为存储过程的输入参数,产生存储过程调用。将存储过程调用传送到由要执行的调用命名的存储过程。接收存储过程的输出,并将该输出插入返回客户机的数据对象。

通过对数据库内的数据进行操作,存储过程最好对数据库进行处理并产生输出。该输出可以包括为一组输出中的一个成员的输出,该组输出包括数据库表内的一个或多个结果数据集和通过对数据库表内的数据进行存储过程操作获得的一个或多个输出参数。

更进一步产生用于描述包括在数据对象内的存储过程输出的元数据。将该元数据附加到数据对象。客户机可以对接收的数据对象内的元数据进行处理以确定如何存取数据对象的存储过程输出。

本发明还提供了一种使应用程序可以利用存储过程程序的方法。确定一个存储过程程序,所述存储过程程序产生一个应用程序所需的输出。产生远程接口实现以响应远程接口方法,所述远程接口实现可以从包括数据的应用程序接收调用,并利用应用程序内的数据用作输入、调用数据库服务器内的存储过程。以及对远程接口实现产生输出映射,用以确定如何将存储过程输出插入可以被应用程序使用的数据对象内。

所说明的实现提供了一种使客户机应用程序能够存取和调用存储过程程序并以与客户机应用程序兼容的格式使数据返回客户机应用程序。

附图说明

现在,将参考附图所示、仅作为例子的本发明的优选实施例说明本发明,附图包括:

图1示出实现本发明各方面的计算环境;

图2示出根据本发明描述的实现远程接口实现、为了对访问存储过程进行管理所采用的数据结构;

图3示出远程接口实现为了调用存储过程所执行的逻辑;以及

图4示出根据本发明描述的实现远程接口实现、对存储过程输出进行处理所执行的逻辑。

发明详述

在以下的说明中,将参考作为本发明一部分、示出本发明的几个实施例的附图。应当理解还可以采用其它实施例,而且在本发明范围内,可以进行其结构和运行的变化。

图1示出实现本发明各方面的网络计算环境2。网络环境2包括:客户机系统4,包括客户机应用程序6和远程接口8;应用服务器10,包括远程接口实现(implementation)12和数据库客户机程序14;以及数据库服务器16,包括诸如数据库管理系统(DBMS)程序的数据库程序18和数据库22。客户机系统4、应用服务器10以及数据库服务器16可以包括一个或多个服务器或本技术领域内众所周知的任何其它计算机设备。作为一种选择,应用服务器10可以包括在客户机系统4或不同系统上执行的中间件。

客户机系统4、应用服务器10以及数据库服务器16通过网络20进行通信,网络20可以包括本技术领域内内众所周知的任何网络,包括:传输控制协议/网际协议(TCP/IP)网络(例如:内部网络、因特网)、局域网、广域网、光纤信道、令牌环等。作为一种选择,网络20可以包括多个网络。作为一种选择,可以在同一个机器上或单独机器的任何组合上实现数据库程序18、数据库22、远程接口实现12以及客户机应用程序6,从而避免了在程序6、10以及16的某两个之间需要网络通信协议。

数据库客户机/服务器程序14、18可以包括本技术领域内众所周知的数据库客户机/服务器程序,例如IBM公司的DB2、OracleCorporation的ORACLE、微软公司的SQL服务器等。(DB2是国际商用机器公司的商标。)数据库程序14和18用于根据保持在一个或多个数据库22内的信息存取和执行操作。数据库22可以包括一个或多个具有数据行和数据列的表24。IBM公司的出版物“AdministrationGuide,version 7(Volumes 1,2,and 3)”、第SC09-2946-00号、第SC09-2944-00号第SC09-2945-00号IBM文件(IBM公司2000年版权)以及Don Chamberlin编写的“A Complete Guide to DB2Universal Database”(Morgan/kaufman,1998)对数据库程序的结构和运行进行了详细说明,在此引用这些出版物的全部内容供参考。

在图1所示的上述实现中,数据库程序18包括存储过程28,存储过程28是数据库客户机14内的调用或调用机(mechanism)30调用的程序。存储过程调用30将输入参数送到存储过程28。响应调用30,在数据库服务器16内执行存储过程28,而且可以执行结构查询语言(SQL)语句以根据输入参数处理数据库22的记录或者执行与SQL不相关的操作。存储过程28可以包括过程构造模块,而且还可以包括SQL语句,即应用程序。此外,存储过程28可以执行程序语句,而无需查询数据库表22。在这种情况下,存储过程28可以包括独立于数据库22执行并产生输出的程序。可以利用存储数据库调用30内的名称调用存储过程28。存储过程特别用于处理大量数据库记录,例如几百万至几十亿个记录,而无需在数据库服务器16与数据库客户机14之间传送数据和提供必要输入参数。存储过程被保持在数据库服务器16内供多个数据库客户机14访问和重新使用。关于存储过程的进一步详细说明请参考出版物“A Complete Guide to DB2Universal Database”,在此引用此出版物供参考。

在某些实现中,可以利用本技术领域内众所周知的诸如Java远程方法调用(RMI)、公共对象请求代理体系结构(CORBA)、远程过程调用(RPC)、简单对象访问协议(SOAP)等的分布式计算协议实现远程接口8和远程接口实现12,从而允许远程接口实现12与远程接口8进行通信。应用服务器10还运行对客户机发出的请求进行处理的程序,例如IBM WebSphere应用服务器或超文本传输协议(HTTP)服务器。可以作为企业JavaBean实现远程接口实现12,企业JavaBean能够处理各种客户机,例如万维网浏览器、Java小应用程序等发出的请求,并且能够调用存储过程28以采集客户机应用程序6请求的数据。因此,远程接口8和远程接口实现12包括通过网络20进行通信的分布式对象。

在利用企业JavaBean实现远程接口8和远程接口实现12的实现中,应用服务器10提供安全性、并发控制、交易支持以及其它通用商务要求。利用RMI/IIOP协议,客户机端Java应用程序可以直接访问企业JavaBean远程接口实现12,或者与在应用服务器10上实现的HTTP服务器通信的万维网客户机可以间接访问企业JavaBean远程接口实现12。此外,客户机调用32可以进一步调用Java小服务程序或Java服务器页面(JSP),Java小服务程序或Java服务器页面(JSP)反过来调用远程接口实现12。

远程接口实现12可以从客户机应用程序6接收请求或调用32,客户机应用程序6可以提供与请求有关的数据。然后,远程接口实现12将客户机调用32内的数据映射到存储过程调用30的任意输入参数。然后,远程接口实现12调用用于指定服务器存储过程28的名称的存储过程调用30和包括在客户机应用程序6内的任意输入参数。为了产生存储过程调用30,远程接口实现12必须包括任何要求的输入,从而将客户机调用32的任意内容映射到存储过程调用30的输入参数。存储过程28可以返回表24内、满足查询的0个或多个结果数据集。查询项目可以基于从客户机调用32映射的输入参数。此外,存储过程28可以对数据库表24内的数据进行计算和操作,或者执行不访问数据库表24的其它操作,以产生一个或多个输出参数,例如满足查询条件的所有行的各数值的平均值。存储过程28可以更进一步对数据库服务器14执行各种操作,而无需将任何数据返回节点,例如发送消息。远程接口实现12必须输入代码以将从存储过程28返回的一个或多个结果数据集和/或输出参数映射到通过远程接口8可以返回客户机应用程序6的数据结构。

当前软件体系结构面对的一个挑战是,客户机应用程序6希望一个数据对象根据调用32返回。然而,存储过程输出可能包括一个或多个具有不同列格式的多行数据的结果数据集以及一个或多个输出参数。为了适应客户机仅响应调用32接收一个数据对象的限制,上述实现提供了一种将存储过程输出映射到与客户机应用程序兼容的格式的技术。

图2示出保持在远程接口实现12内的数据结构,在将调用30调用到存储过程28时,并且在将任何返回结果数据集和/或参数插入Java串行化对象34以返回客户机远程接口8时,使用该远程接口实现12。Java串行化过程是标准Java机制,为了使该对象写入文件或通过网络发送该对象,该Java机制创建独立于Java对象状态字节流的平台。对于可串行化的分类,用户必须实现iava.io.Serializable接口,而且分类字段必须或者是基元型(primitive type)的或者是可串行化的。作为一种选择,如果该分类实现将非基元或非可串行化字段写入字节流的方法,则对象是可串行化的。图2进一步示出从远程接口实现12接收的、包括参数以及对数据或其它信息的请求的客户机远程接口调用32。远程接口实现12包括一个或多个输入映射52,输入映射52确定调用32的一个或多个数据参数54a、b...、n如何映射到被提供给存储过程28的存储过程调用32的输入参数56a、b...、m。

远程接口实现12进一步包括一个或多个输出映射60,输出映射60确定从存储过程28返回的结果数据集62a...k和输出参数64如何映射到Java可串行化对象34内的元素66a...k和68。Java可串行化对象34包括元数据72,它提供关于附加在对象34内的每个元素的信息。例如,元数据72可以指出哪个元素包括输出参数以及对可串行化对象34内的元素附加的每个输出参数的数据类型和数据长度。元数据72可以进一步提供关于返回结果数据集的信息,包括不同返回结果数据集的数量、各列的结构和每个结果数据集内的数据类型,以及行数量和这种结果数据集数据如何映射到Java可串行化对象34内的元素66a...k。这样,从存储过程28返回的结果数据集和/或输出参数可以映射到可以响应调用32作为一个数据对象返回客户机应用程序6的Java可串行化对象34内的各元素。本技术领域内的技术人员明白可以利用各种类型的可串行化数据对象存储存储过程输出,例如IBMData Access Beans(IBM Data Access Beans)可调用语句对象(com.ibm.db.CallableStatement)。

输入映射52和输出映射60可以包括确定客户机调用32的内容如何映射到存储过程调用的输入参数56a、b...、m以及从存储过程28返回的返回结果数据集62a...k和输出参数64如何映射到Java可串行化对象34内的各元素的索引。

在某个实现中,存储过程28不能将输出返回远程接口实现12,但是可以执行其它动作,例如更新数据库22、发送消息、调用其它应用程序等。在这种情况下,调用存储过程28的远程接口实现12将不包括输出映射60。

应用服务器10可以保持多个根据各不同客户机调用调用的、包括不同输入映射52和输出映射60的远程接口实现12。

此外,远程接口实现12还可以保持如图2所示的错误映射80,用于将从存储过程28返回的、通常属于SQL错误的存储过程错误82a...n映射到Java远程异常(exception)84a...n,例如利用Java.rmi.RemoteExceptions分类定义的异常。与存储过程产生的SQL错误码相比,客户机应用程序6更可能理解和采用Java异常。此外,还要求此错误映射支持行业标准,例如企业JavaBean规范。

图3示出为了根据客户机调用32内的参数产生存储过程调用30,在远程接口实现12内所执行的逻辑。在方框100,控制过程以远程接口实现12从远程接口8接收调用32以调用远程接口实现1 2来存取存储过程28开始。在方框102,调用远程接口实现12,并确定(在方框104)远程接口实现12的输入映射52。根据输入映射52,远程接口实现12存取(在方框106)客户机调用32的参数或数据54a、b...n,这些参数或数据将映射到存储过程调用30的一个或多个输入参数56a、b...m。然后,根据存取的输入映射52,将存取参数54a、b...n插入(在方框108)每个输入参数56a、b...m内。之后,远程接口实现1 2调用(在方框110)具有客户机调用32的输入参数的存储过程调用30。

图4示出为了根据调用30对存储过程28产生的输出进行处理,在远程接口实现12内所执行的逻辑。收到(在方框200)存储过程28产生的0个或多个行结果数据集和/或输出参数后,远程接口实现12访问(在方框202)远程接口实现12的输出映射60,输出映射60确定将结果数据集数据和/输出参数映射到Java可串行化对象34以返回客户机远程接口8,客户机远程接口8反过来将该对象返回客户机应用程序6。可以固定预定输出参数的数量和字段,例如计算值,因此可以改变返回的结果数据集的数量。在方框204至218,远程接口实现12对每个接收结果数据集i执行步骤206至218。对于每个接收结果数据集i,远程接口实现12产生(在方框206)元数据72,元数据72定义结果数据集i的每个列(包括每列的数据类型和长度)以及结果数据集i内的行数。对于结果数据集i内的每行j(在方框208至216)以及对于行i上的每列k(在方框210至214),远程接口实现12将数据元素66a...k附加到Java可串行化对象34,并将结果数据集i内k列、j行上的数据插入此附加元素内。对结果数据集i内的所有行上的所有列执行此过程,直到将整个结果数据集i的数据总装到Java可串行化对象34。然后,对从存储过程28接收的输出中的任何其它结果数据集i执行(在方框218)此过程。

在方框220至226,对于每个返回输出参数m,产生元数据并将该元数据附加到定义输出参数m的类型和长度的元数据72(在方框222)。然后,将数据元素68附加到将输出参数m的数据插入其内的Java可串行化对象34。在产生Java可串行化对象34以包括描述存储过程28输出的结果数据集和/或输出参数数据后,Java可串行化对象34作为单个数据对象通过远程接口8返回(在方框228)客户机应用程序6。

可以将客户机应用程序6编码为通用客户机用于处理Java可串行化对象,CallableStatement等,而无需假定知道关于CallableStatement的内部结构的任何先前知识。相反,客户机应用程序6可以根据包含在返回对象34内的元数据72剖析该对象并利用诸如由过程返回的输出参数和结果数据集的相关分量工作。

根据图3和图4所示的逻辑,远程接口实现12可以代表客户机应用程序6使用存储过程28程序并将可以包括存储过程28的所有输出以及自描述元数据72的单个数据对象返回客户机应用程序6,存储过程28的所有输出可以包括多个数据点。可以对客户机应用程序4进行编码以处理元数据72,从而确定Java可串行化对象34内的输出结果的结构和格式进而存取、使用其内的数据。根据上述描述的实现,即使存储过程程序28产生其格式对于该应用程序不可存取的输出,远程接口实现12仍可以使客户机应用程序存取存储过程程序28采集的数据,该存储过程程序28可以是遗留程序。例如,利用诸如企业JavaBean体系结构的标准分布式计算体系结构,可以使企业JavaBean客户机部件使用存储过程的功能和输出,而无需重写存储过程代码。

以下是上述实现的一个应用实例。在此例中,客户机应用程序6与面向金融的万维网网站相连,这样可以使用户通过该网站进行注册、跟踪其投资组合以及将评论登记到电子公告牌上。支持此万维网网站的数据库包括具有每个客户机的客户机信息、投资组合信息以及对公告牌登记的登记索引的表。数据库22还含有用于提供注册网站用户的综合概况的存储过程28客户机报告(CLIENTREPORT),包括其投资和它们在电子公告牌上所做的登记。客户机报告包括客户机名称和电子邮件地址从而使销售人员向用户提供关于所提供的其它产品或服务的建议。

在此示例中相关的存储过程28可以分别对3个单独SQL语句进行处理,从将返回客户机应用程序的输出参数和结果数据集内采集正确数据。在这种情况下,输出参数包括万维网网站客户机的名称和电子邮件地址,而且该结果数据集包括关于特定用户的投资资产和公告牌登记内容的信息。例如,使用万维网浏览器(未示出)的用户可以提交HTTP请求,该HTTP请求包括用户ID和关于用户投资组合信息的请求。可以将HTTP请求送到客户机应用程序6,客户机应用程序6可以反过来调用远程接口。然后,远程接口可以将用户ID和关于投资组合信息的请求送到远程接口实现12,远程接口实现12可以产生存储过程调用30,输入存储过程调用30以使存储过程28获得利用所提供用户ID识别的用户的投资组合信息。然后,将所有这3个表中的存储过程28输出封装到诸如“com.ibm.db.CallableStatement”的Java可串行化对象34内或其它数据对象内以返回到客户机应用程序6。此后,客户机应用程序6对该信息进行去封装和分析,然后,将它插入可以在发出关于投资组合信息的HTTP请求的用户的万维网浏览器中呈现的页面内。

存储过程可以用于大量其它电子商务应用中,例如查询数据库并采集根据其计算运费、复查货物清单、处理装载的货物、返回趋势分析等的记录。这样,将处理负担从客户机或应用服务器转移到了数据库服务器。

利用上述实现,可以降低电子商务以及其它应用程序的开发成本和维护成本,因为这些应用程序采用先前存在的遗留存储过程,而无需重写存储过程代码。在开发利用其实现遗留存储过程执行的操作的应用程序时,不习惯SQL和数据库环境的应用程序开发者可能存在困难。利用上述实现,应用程序开发者不需要知道关于SQL的广博的知识以及数据库的结构和排列。相反,应用程序开发者仅需要创建使客户机程序可以使用存储过程输出的远程接口。

所实现的优选实施例可以是利用标准编程技术和/或工程技术产生软件或代码的一种方法、设备或产品。在此,术语“产品”指在计算机可读介质(例如:磁性存储介质(例如:硬盘驱动器、软盘、磁带等)、光存储器(CD-ROM、光盘等)、易失性存储装置和非易失性存储装置(例如:EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可编程逻辑电路等))内实现的代码或逻辑。处理器可以存取和执行计算机可读介质内的代码。还可以通过传输媒体,或者通过网络由文件服务器存取该优选实施例中实现的代码。在这种情况下,实现该代码的产品可以包括传输媒体,例如网络传输导线、无线传输媒体、在空间传播的信号、无线电波、红外信号等。当然,本技术领域内的技术人员明白可以对此配置做许多修改,并且产品可以包括本技术领域内众所周知的任何信息载体。

在某些实现中,将存储过程28输出置放在Java可串行化对象内。然而,也可以利用另一种数据对象存储聚合的输出数据。

在上述实现中,所实现的远程接口是企业JavaBean。然而本技术领域内的技术人员应当明白,可以采用任何部件体系结构实现远程接口8、远程接口实现12、客户机应用程序6以及远程接口调用32,而且还应当明白本发明并不局限于Java实现。

在一种Java实现中,可以将远程接口编写为无状态对话(statelesssession)企业JavaBean,以将必须编码的强制方法的数量降低到最小、将资源消耗降低到最少并允许利用多个客户机使用它。

在上述实现中,客户机远程接口调用32调用的远程接口实现12从客户机调用存取参数并调用存储过程调用。作为一种选择,远程接口实现12还可以调用另一个程序部件以调用存储过程调用。

在又一种实现中,应用服务器10可以保持多个作为多个企业JavaBean实现的远程接口实现12。

在上述实现中,客户机调用32直接调用远程接口实现12。此外,客户机应用程序6可以包括万维网或超文本标记语言(HTML)客户机,它将调用32作为间接通过Java小服务程序调用远程接口实现12的超文本传输协议(HTTP)请求发送。

根据用于产生调用并将该调用发送到存储过程程序的特定数据结构,例如输入映射和输出映射,对各优选实施例进行了说明。然而,本技术领域内的技术人员应认识到,可以对客户机应用程序映射到存储过程的输入参数的方式以及存储过程输出如何封装到一个数据对象内的方式进行修改。

在上述实现中,存储过程产生被发送到客户机应用程序的输出。在其它实现中,存储过程不产生返回到客户机应用程序6的输出数据,但是可以将输出发送到其它应用程序或者执行其它操作,例如更新数据库、发送电子邮件等。

在上述实现中,远程接口实现12调用返回返回结果数据集的存储过程。在其它实现中,存储过程可以不产生返回客户机应用程序6的结果数据集,但是可以将结果数据集或其它输出发送到其它应用程序,或者执行某些其它操作,例如更新数据库、发送电子邮件等。

在客户机系统4或网络20内的其它计算设备内可以实现包括远程接口实现12和客户机数据库程序14的应用服务器10或中间件。

为了说明和描述本发明,以上对根据本发明的优选实施例进行了说明。本发明并不完全局限于所披露的特定形式。根据上述教导可以对其进行多种修改和变化。对本发明范围不是由此详细说明限定的,而是由所附权利要求限定的。上述说明、例子以及数据对本发明组成的生产和使用进行了全面描述。因为在不脱离本发明范围内,可以实现根据本发明的许多实施例,所以本发明权利由所附权利要求确定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号