- 1、本文档共58页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 存储过程 本章学习要点 l???????? 学习StoredProc和ADOStoredProc组件 l???????? 掌握存储过程的创建、执行、更新和删除方法 l???????? 学习使用存储过程 l???????? 掌握调用执行无参数存储过程 l???????? 掌握调用执行带参数存储过程 ? 存储过程(Stored Procedure)是数据库中较高级的应用,它其实就是数据库服务器端的一段程序,是在数据库服务器端执行的语句和可选控制流语句的预编译集合,使用存储过程可以提高应用程序的数据处理能力。根据这些程序的功能可以将它们分为两类。一类是类似于SELECT查询,用于检索数据,检索到的数据能够以数据集的形式返回给用户;另一类类似于INSERT或DELETE查询,它不返回数据,只是执行一个动作。 在存储过程和应用程序进行交互的时候,需要用一些参数来传递信息。这些参数可以分为输入参数、输出参数、输入/输出参数以及状态参数等。 存储过程执行查询时,可变参数的值和插入记录时字段的值等需要应用程序传递给存储过程,这种参数叫输入参数。存储过程将查询的结果传递给应用程序,这在存储过程中叫输出参数。有时候,在执行存储过程前需要由应用程序将参数的值传递给存储过程,在执行完毕后再由存储过程传递给应用程序,这种称为输入/输出参数。另外,存储过程在执行完毕后,通过状态参数将错误信息传递给应用程序。 本章首先介绍存储过程组件,接着创建和编辑存储过程,以及带参数的存储过程,最后给出了在Delphi中调用存储过程的具体实现方法和使用实例。 8.1 存储过程组件 在Delphi中,可以使用StoredProc组件和Query组件来访问和操纵服务器上的存储过程。使用哪一种组件是由存储过程的实现,数据结果的返回以及使用的数据库服务器共同决定的。 StoredProc组件和Query组件都是数据集组件,从DataSet派生而来。但是,用这两种组件来访问存储过程时是有很多差别的。StoredProc组件适合于执行那些不需要返回数据,并且通过输出参数来返回信息的存储过程。StoredProc组件的Params属性用于管理这些参数,同时,StoredProc组件的GetResults方法可以显式地申请返回结果。 Delphi中除了通过StoredProc和Query组件完成存储过程的动态维护以外,还可以使用ADO组件面板上的ADOStoredProc组件在客户程序中调用服务器中的存储过程。 下面介绍以下StoredProc组件的重要属性和方法。 8.1.1 StoredProc组件的重要属性和方法 StoredProc组件属于数据集组件,所有数据集组件共有的属性它都具有。另外,它还有自己特有的属性,如表8-1所示。 下面详细介绍StoredProc组件的几个重要属性。 Overload属性:用来说明在一个Oracle服务器上将执行哪一种重载的存储过程。一个Oracle重载的存储过程是和其他的存储过程同名的。Oracle服务器通过给每个过程一个特有的数码标识来区别重载的存储过程。应用程序可以通过Overload属性来指明数码标识。默认时,Overload属性值为0,表明没有存储过程的重载。如果Overload属性值为1,BDE将执行第一种重载过程,如果Overload属性值为2,BDE将执行第二种,依次类推。需要注意的是,Oracle的重载过程是同名的,但它们的参数列表却各不相同,应用程序必须确保提供的参数列表与重载过程相符。 Params属性:用来储存存储过程中输入和输出的参数的。其属性值是一个参数值的数组。在运行时可以通过访问Params属性值来动态地设置参数名、参数值和数据类型。在执行了存储过程之后,应用程序也可以通过访问Params属性值来获得服务器返回给过程的输出参数。 ParamCount属性:用来指明Params属性中存储参数的数目。 下面举例说明Params属性的使用: with StoredProc1 do //设置输入参数 for i:=0 to ParamCount-1 do if(Params[1].paramtype=ptinput) or (Params[1].paramtype=ptoutput) then Params[1].as
文档评论(0)