《数据库应用技术——Delphi应用系统开发》-蒋丽华-电子教案第八章_第1页
《数据库应用技术——Delphi应用系统开发》-蒋丽华-电子教案第八章_第2页
《数据库应用技术——Delphi应用系统开发》-蒋丽华-电子教案第八章_第3页
《数据库应用技术——Delphi应用系统开发》-蒋丽华-电子教案第八章_第4页
《数据库应用技术——Delphi应用系统开发》-蒋丽华-电子教案第八章_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、lMicrosoftMicrosoftMicrosoft属性含义Overload决定在Oracle服务器上执行哪一种存储过程的重载ParamBindMode决定组件在服务器上执行存储过程时,参数列表中各参数的先后顺序ParamCount指明了组件在执行存储过程中使用参数的数目Params储存存储过程中输入和输出的参数Prepared标志执行存储过程的准备工作是否已完成StmtHandle为了在存储过程中直接调用BDE的API函数StoredProcName表示服务器上的存储过程名表8-1 StoredProc组件特有属性MicrosoftMicrosoft方法方法 功功 能能CopyParam

2、s 复制一个存储过程中的参数到另一个参数列表中Create 新建一个存储过程控件DescriptionsAvailable 标志服务器是否可以返回存储过程的参数Destory 撤消一个存储过程ExecProc 执行服务器上的存储过程GetResults 取得一个Sybase存储过程的返回参数ParamByName 根据参数名访问参数信息Prepare 为执行存储过程进行准备UnPrepare 释放在先前准备操作时分配给存储过程的资源Microsoft图8-1 Parameters编辑框 图8-2 在Object Inspector中设置ProcedureName属性MicrosoftParam

3、ByName 方法:其基本格式如下:Function ParamByName (const Value: string ):Tparam;调用ParamByName 方法会根据参数名获取相应的参数信息。Value 就是 希望获取信息的参数的名字。通过调用ParamByName 方法可以在运行时设置输入参数,或者用来获取输出参数的值。MicrosoftMicrosoftMicrosoftMicrosoft2执行一个存储过程(1) 准备工作 在执行一个存储过程前,需要做一些准备工作,即要通知数据库服务器。如果是在设计阶段,可以通过Parameters 编辑框给出参数做准备 ;如果在程序的运行阶段,

4、可以调用 StoredProc 组件的 Prepare 方法,如: StoredProc1. Prepare; 如果应用程序在运行阶段改变了存储过程的参数,例如使用了 Oracle 的重载过程,就需要重新准备存储过程,即必须重新调用StoredProc 组件的 Prepare 方法。 MicrosoftMicrosoftMicrosoft 图8-3 Parameters编辑对话框框 图8-4 在Object Inspector中访问参数的属性 Microsoft为:Function ParamByName(const Value:string):TParam; 其中,Value是要访问的参数的

5、名字。通过调用ParamByName方法可以在运行时设置输入参数或者获取输出参数的值。 ExecProc方法:用来执行服务器上的存储过程的。在调用ExecProc方法前,首先要确认Parameters属性中给出所有存储过程需要的参数,然后设置Prepared属性为True,绑定参数。 最后调用ExecProc方法,当ExecProc方法将控制权重新交给应用程序时,如果存储过程返回了输出参数,它们将被存储在Parameters属性中。应用程序可以通过Parameters属性的参数表列索引,或者通过调用ParamByName方法访问这些 输出参数。Microsoft8.2 创建、编辑创建、编辑存储

6、过程存储过程 存储过程一般是需要专门的工具来编写的,使用存储过程的数据库服务器通常都带有这种工具。在Delphi中,还可以通过SQL语句来编辑存储过程。对于不同的数据库服务器来说,即使功能相同的存储过程,SQL语句也可能是不同的。所以,在使用存储过程前需查阅数据库服务器的文档。MicrosoftMicrosoft状态值含义状态值含义0成功返回-3选中的进程死锁-1丢失引用对象-4权限错误-2数据类型不匹配 如果没有在存储过程中使用Return定义返回状态值,存储过程会自动定义一个RETURN_VALUE参数,它在Params属性中的序号为0。 下面举一个简单的例子来说明在SQL Server数

7、据库服务器中怎样定义存储过程,代码如下。MicrosoftMicrosoftMicrosoftMicrosoftMicrosoft Create Procedure ShowInfoproc iStudID char(6) as /begin和end也可以省略 select StudName,StudScore from ShowInfo where StudID=iStudID 如果想从上面的存储过程中检索结果集,可以将Query组件的SQL属性设置 为以下的SQL语句。 Execute ShowInfoproc 990071 ;使用Query组件来检索存储过程的结果数据集时有一个好处就是,

8、既可以检索出整个结果数据集,也可以从结果数据集中选择所需的记录显示。MicrosoftMicrosoftMicrosoft8.3.2使用使用StoredProc组件组件 通过StoredProc 组件也可以使用存储过程,即可以检索数据集、参数查询、增加记录、修改及删除记录等。MicrosoftMicrosoftMicrosoft图8-5 程序界面 第二步:将ADOConnection组件(Name属性设为ADOConnection1)与数据库联系,连接数据模板上的数据库newworldhouse,设置Connected属性为True;ADOStoredProc 组件(Name属性设为ADOSt

9、oredProc1)的Connection选择ADOConnection1;ADOQuery组件( Name属性设为ADOQuery1) MicrosoftMicrosoftMicrosoft图8-6 调用存储过程结果 第五步:执行程序,当选中CheckBox1复选框时将显示存储过程的执行结果,当取消选中CheckBox1复选框时,将不显示任何的数据。单击“”按钮,也可以执行存储过程,显示界面如图8-6所示。8.4 存储过程的参数存储过程的参数 与存储过程相关的参数共有四种,即输入参数、输出参数、输入/输出参数和状态结果参数。在下面的章节里将详细介绍参数的种类以及怎样访问和创建参数。 Micr

10、osoft表8-4 存储过程的参数 参数类型含义输入参数需要应用程序向存储过程传递输出参数由存储过程向应用程序传递输入/输出参数应用程序和存储过程可互相传递状态结果参数由存储过程向应用程序传递的有关错误和状态的信息 存储过程具体使用哪些参数,和数据库服务器有关。像MS_SQL数据库服务器和Sybase数据库服务器上的存储过程一般会返回状态结果参数,而InterBase数据库服务器不支持返回状态结果参数。MicrosoftMicrosoft2使用输出参数使用输出参数 存储过程使用输出参数向调用它的应用程序返回执行结果。输出参数是在存储过程执行后由存储过程赋值,应用程序可以访问输出参数的值。 应用

11、程序可以使用StoredProc 组件的Params 属性或ParamByName方法来访问输出参数。假如想将第一个输出参数的值显示在编辑框中,可使用如下的代码: With MyStoredProc do Begin ExecProc; Edit1.Text:= Params0. AsString; End;MicrosoftCreate Or Replace Procedure UpdateInfo (InOutParam IN OUT Integer)AsBegin Update StudInfo; Set Age = InOutParam; Where StudID = 990071;

12、InOutParam:=20;End UpdateInfo;MicrosoftWith MyStoredProc doBegin ParamByName(InOutParam).AsInteger:= 29; ExecProc; Edit1.Text:= ParamByName(InOutParam).AsString;End;SQL Server数据库服务器中的存储过程不支持输入/输出参数。4状态结果参数状态结果参数 除了返回输出参数和数据集外,存储过程还能返回状态结果参数。状态结果参数经常用来返回错误或状态信息。在使用前先阅读数据库服务器的文档,看是否支持以及怎样支持状态结果参数。状态结果

13、参数不需要在执行存储过程前赋值,只有在执行存储过程后才能访问它的值。Microsoft8.4.2访问参数访问参数 存储过程的参数可以在设计期间进行访问,也可以在程序的运行期间进行创建和访问。1设计期间访问参数设计期间访问参数 如果在设计期间,已经设置好了StoredProc 组件的DatabaseName 属性和StoredProcName 属性,那么可以使用StoredProc 组件的参数编辑器来查看存储过程的参数名、参数类型等有关参数信息。如果是输入参数,可以设置它们的值。不过,不是所有数据库服务器都允许这样做,像Informix 数据库服务器,它不提供像存储过程参数的名字、参数类型等信息

14、,但可以使用SOL Explorer 来查看存储过程的代码,从代码中找出参数名和参数类型,然后可在Object Inspector中手工建立参数。Microsoftl 设置好StoredProc 组件的DatabaseName 属性和StoredProcName 属性。l 在Object Inspector中,单击StoredProc 组件的Params 属性右边的省略号按钮,使可以打开如图8-1所示的参数编辑器。如果在第一步中没有设置好DatabaseName 属性或StoredProcName 属性,那么在参数编辑器中就不会出现参数。此时,可以使用该编辑器工具栏上的Add New 按钮,或

15、右击该编辑器,在弹出的菜单中选择Add 菜单项,就可以创建一个新的参数。l 在参数编辑器中选择一个参数,就可以在Object Inspector中查看该参数的属性;如果该参数的ParamType属性值为ptUnkow,则必须在ParamType属性右边的下拉列表框里选择参数的类型,可以为ptInput、ptOutput、ptInputOutput或者是ptResult。l 设置好参数的DataType属性值,即设定参数的数据类型;如果是Oracle 数据库服务器上的存储过程,想返回一个数据集,则必须将参数的DataType 属性设为ftCursor。l 另外,如果是输入或输入/输出参数,则必须设置参数的Va

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论