第8章--存储过程-《数据库应用技术——Delphi应用系统开发》-电子教案课件.ppt

上传人:可****阿 文档编号:91535734 上传时间:2023-05-27 格式:PPT 页数:58 大小:3.07MB
返回 下载 相关 举报
第8章--存储过程-《数据库应用技术——Delphi应用系统开发》-电子教案课件.ppt_第1页
第1页 / 共58页
第8章--存储过程-《数据库应用技术——Delphi应用系统开发》-电子教案课件.ppt_第2页
第2页 / 共58页
点击查看更多>>
资源描述

《第8章--存储过程-《数据库应用技术——Delphi应用系统开发》-电子教案课件.ppt》由会员分享,可在线阅读,更多相关《第8章--存储过程-《数据库应用技术——Delphi应用系统开发》-电子教案课件.ppt(58页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第8 章 存储过程n n 本章学习要点 本章学习要点n n l l 学 学习 习 StoredProc StoredProc和 和 ADOStoredProc ADOStoredProc组 组件 件n n l l 掌 掌握 握存 存储 储过 过程 程的 的创 创建 建、执 执行 行、更 更新 新和 和删 删除方法 除方法n n l l 学习使用存储过程 学习使用存储过程n n l l 掌握调用执行无参数存储过程 掌握调用执行无参数存储过程n n l l 掌握调用执行带参数存储过程 掌握调用执行带参数存储过程n n lMicrosoft 存储过程(存储过程(StoredProcedure Sto

2、redProcedure)是数据库中较高级的应用,它其实就是数据库 是数据库中较高级的应用,它其实就是数据库服务器端的一段程序,是在数据库服务器端执行的语句和可选控制流语句的预编译集 服务器端的一段程序,是在数据库服务器端执行的语句和可选控制流语句的预编译集合,使用存储过程可以提高应用程序的数据处理能力。根据这些程序的功能可以将它 合,使用存储过程可以提高应用程序的数据处理能力。根据这些程序的功能可以将它们分为两类。一类是类似于 们分为两类。一类是类似于SELECT SELECT 查询,用于检索数据,检索到的数据能够以数据 查询,用于检索数据,检索到的数据能够以数据集的形式返回给用户;另一类类

3、似于 集的形式返回给用户;另一类类似于INSERT INSERT 或 或DELETE DELETE 查询,它不返回数据,只是 查询,它不返回数据,只是执行一个动作。执行一个动作。在存储过程和应用程序进行交互的时候,需要用一些参数来传递信息。这些 在存储过程和应用程序进行交互的时候,需要用一些参数来传递信息。这些参数可以分为输入参数、输出参数、输入 参数可以分为输入参数、输出参数、输入/输出参数以及状态参数等。输出参数以及状态参数等。存储过程 存储过程执行查询时,可变参数的值和插入记录时字段的值等需要应用程序传 执行查询时,可变参数的值和插入记录时字段的值等需要应用程序传递给存储过程,这种参数叫

4、输入参数。存储过程将查询的结果传递给应用程序,递给存储过程,这种参数叫输入参数。存储过程将查询的结果传递给应用程序,这在存储过程中叫输出参数。有时候,在执行存储过程前需要由应用程序将参 这在存储过程中叫输出参数。有时候,在执行存储过程前需要由应用程序将参数的值传递给存储过程,在执行完毕后再由存储过程传递给应用程序,这种称 数的值传递给存储过程,在执行完毕后再由存储过程传递给应用程序,这种称为输入 为输入/输出参数。另外,存储过程在执行完毕后,通过状态参数将错误信息传 输出参数。另外,存储过程在执行完毕后,通过状态参数将错误信息传递给应用程序。递给应用程序。本章首先介绍存储过程组件,接着创建和编

5、辑存储过程,以及带参数的存储 本章首先介绍存储过程组件,接着创建和编辑存储过程,以及带参数的存储过程,最后给出了在 过程,最后给出了在Delphi Delphi中调用存储过程的具体实现方法和使用实例。中调用存储过程的具体实现方法和使用实例。Microsoft8.1 存储过程组件 在 在Delphi Delphi中,可以使用 中,可以使用StoredProc StoredProc组件和 组件和Query Query组件来访问和操纵服 组件来访问和操纵服务器上的存储过程。使用哪一种组件是由存储过程的实现,数据结果的返回 务器上的存储过程。使用哪一种组件是由存储过程的实现,数据结果的返回以及使用的数

6、据库服务器共同决定的。以及使用的数据库服务器共同决定的。StoredProc StoredProc组件和 组件和Query Query组件都是数据集组件,从 组件都是数据集组件,从DataSet DataSet派生而来。派生而来。但是,用这两种组件来访问存储过程时是有很多差别的。但是,用这两种组件来访问存储过程时是有很多差别的。StoredProc StoredProc组件 组件适合于执行那些不需要返回数据,并且通过输出参数来返回信息的存储过程。适合于执行那些不需要返回数据,并且通过输出参数来返回信息的存储过程。StoredProc StoredProc组件的 组件的Params Params

7、属性用于管理这些参数,同时,属性用于管理这些参数,同时,StoredProc StoredProc组 组件的 件的GetResults GetResults方法可以显式地申请返回结果。方法可以显式地申请返回结果。Delphi Delphi中除了通过 中除了通过StoredProc StoredProc和 和Query Query组件完成存储过程的动态维护 组件完成存储过程的动态维护以外,还可以使用 以外,还可以使用ADO ADO组件面板上的 组件面板上的ADOStoredProc ADOStoredProc组件在客户程序中调 组件在客户程序中调用服务器中的存储过程。用服务器中的存储过程。下面介

8、绍以下 下面介绍以下StoredProc StoredProc组件的重要属性和方法。组件的重要属性和方法。Microsoft8.1.1StoredProc 组件的重要属性和方法StoredProc StoredProc组件属于数据集组件,所有数据集组件共有的属性它都具 组件属于数据集组件,所有数据集组件共有的属性它都具有。另外,它还有自己特有的属性,如表 有。另外,它还有自己特有的属性,如表8-1 8-1所示。所示。属性 含义Overload 决定在Oracle服务器上执行哪一种存储过程的重载ParamBindMode决定组件在服务器上执行存储过程时,参数列表中各参数的先后顺序ParamCou

9、nt指明了组件在执行存储过程中使用参数的数目Params储存存储过程中输入和输出的参数Prepared标志执行存储过程的准备工作是否已完成StmtHandle 为了在存储过程中直接调用BDE的API函数StoredProcName表示服务器上的存储过程名表8-1StoredProc 组件特有属性MicrosoftMicrosoft下面举例说明 下面举例说明Params Params 属性的使用:属性的使用:withStoredProc1do/withStoredProc1do/设置输入参数 设置输入参数 fori:=0toParamCount-1do fori:=0toParamCount-1

10、do if(Params1.paramtype=ptinput)if(Params1.paramtype=ptinput)or or(Params1.paramtype=ptoutput)(Params1.paramtype=ptoutput)then thenParams1.asstring:=;Params1.asstring:=;StoredProcName StoredProcName属性:用来指明服务器调用的存储过程名。如果 属性:用来指明服务器调用的存储过程名。如果StoredProcName StoredProcName属 属性 性中 中指 指明 明的 的存 存储 储过 过程 程

11、名 名与 与服 服务 务器 器上 上存 存在 在的 的存 存储 储过 过程 程名 名不 不相 相符,则当应用程序为存储过程做准备时,会产生一个异常事件。符,则当应用程序为存储过程做准备时,会产生一个异常事件。StoredProc StoredProc具有所有数据集组件的方法,它特有的方法如表 具有所有数据集组件的方法,它特有的方法如表8-2 8-2所示 所示。方法 功 能CopyParams 复制一个存储过程中的参数到另一个参数列表中Create 新建一个存储过程控件DescriptionsAvailable 标志服务器是否可以返回存储过程的参数Destory 撤消一个存储过程ExecProc

12、 执行服务器上的存储过程GetResults 取得一个Sybase存储过程的返回参数ParamByName 根据参数名访问参数信息Prepare 为执行存储过程进行准备UnPrepare 释放在先前准备操作时分配给存储过程的资源Microsoft下面详细介绍 下面详细介绍StoredProc StoredProc 组件的特有方法中最重要的几个。组件的特有方法中最重要的几个。Create Create方 方法 法:在 在应 应用 用程 程序 序中 中通 通过 过调 调用 用Create Create方 方法 法来 来初 初始 始化 化一 一个 个已 已声 声明 明的 的存 存储 储过 过程 程。

13、Create Create方 方法 法调 调用 用它 它派 派生 生的 的Create Create构 构造 造器 器,为 为该 该存 存储 储过 过程 程建 建立 立一 一个新的空参数列表,并将其参数、服务器和记录缓冲区都清空。个新的空参数列表,并将其参数、服务器和记录缓冲区都清空。ExecProc ExecProc方 方法 法:用 用来 来执 执行 行服 服务 务器 器上 上的 的存 存储 储过 过程 程。在 在调 调用 用ExecProc ExecProc方 方法 法前,必须先进行下述操作:前,必须先进行下述操作:l l 在 在Params Params属 属性 性中 中给 给出 出所

14、所有 有存 存储 储过 过程 程需 需要 要的 的参 参数 数。在 在设 设计 计阶 阶段 段,可 可以 以通 通过 过使 使用 用Parameters ParametersEditor Editor对 对话 话框 框给 给出 出参 参数 数,见 见图 图8-1 8-1所 所示 示。在 在运 运行 行时 时,应 应用 用程 程序需要直接访问 序需要直接访问Params Params属性。属性。l l 调用 调用Prepare Prepare方法联系各参数。方法联系各参数。图8-1Parameters编辑框图8-2在ObjectInspector中设置ProcedureName属性Microso

15、ft当 当ExecProc ExecProc 将控制权重新交给应用程序时,如果存储过程返回了输出参数,将控制权重新交给应用程序时,如果存储过程返回了输出参数,它们将被存储在 它们将被存储在Params Params属性中。通过 属性中。通过Params Params属性的参数列表索引,或者通过 属性的参数列表索引,或者通过调用 调用ParamByName ParamByName 方法,应用程序可以访问这些输出参数。如果应用程序只 方法,应用程序可以访问这些输出参数。如果应用程序只是对存储过程的返回结果感兴趣,那么调用 是对存储过程的返回结果感兴趣,那么调用StoredProc StoredPr

16、oc的 的Open Open 方法或设置它 方法或设置它的 的Active Active 属性值为 属性值为True True 即可。即可。GetResults GetResults 方法:调用 方法:调用GetResults GetResults 方法使一个 方法使一个Sybase Sybase 存储过程返回给 存储过程返回给客户。对其它服务器,存储过程的结果会自动返回给客户;而对于 客户。对其它服务器,存储过程的结果会自动返回给客户;而对于Sybase Sybase 存 存储过程,直到记录指针指向数据集的末尾它才会返回结果。储过程,直到记录指针指向数据集的末尾它才会返回结果。GetResu

17、lts GetResults 方法 方法正是使记录指针指向数据集的末尾。正是使记录指针指向数据集的末尾。ParamByName方法:其基本格式如下:FunctionParamByName(constValue:string):Tparam;调用ParamByName方法会根据参数名获取相应的参数信息。Value就是 希望获取信息的参数的名字。通过调用ParamByName方法可以在运行时设置输入参数,或者用来获取输出参数的值。MicrosoftMicrosoft8.1.2 怎样使用StoredProc 组件来实现存储过程 下 下面 面介 介绍 绍如 如何 何使 使用 用 StoredProc

18、StoredProc组 组件 件来 来执 执行 行指 指定 定的 的存 存储 储过 过程 程。在 在应 应用 用程 程序 序 中 中如 如何 何使 使用 用一 一个 个存 存储 储过 过程 程是 是由 由存 存储 储过 过程 程的 的实 实现 现、数 数据 据结 结果 果的 的返 返回 回、使 使用 用的 的数 数据库系统或它们共同决定的。据库系统或它们共同决定的。如 如果 果想 想用 用 StoredProc StoredProc组 组件 件来 来访 访问 问数 数据 据库 库服 服务 务器 器上 上的 的存 存储 储过 过程 程,一 一般 般需 需要 要先初始化一个 先初始化一个Store

19、dProc StoredProc组件,然后再执行存储过程。组件,然后再执行存储过程。1 1初始化 初始化 StoredProc StoredProc组件 组件 可以通过以下几个步骤来初始化一个 可以通过以下几个步骤来初始化一个 StoredProc StoredProc组件。组件。l l 在窗体或者数据模块上添加一个 在窗体或者数据模块上添加一个StoredProc StoredProc组件;组件;l l 设置 设置StoredProc StoredProc组件的 组件的 DatabaseName DatabaseName属性来连接数据库;属性来连接数据库;l l 通 通过 过StoredPr

20、oc StoredProc组 组件 件的 的StoredProcName StoredProcName属 属性 性来 来指 指定 定一 一个 个想 想使 使用 用的存 的存 储过程;储过程;设置 设置StoredProc StoredProc组件的 组件的 Params Params属性来设置存储过程的参数;属性来设置存储过程的参数;Microsoft(1 1)连接数据库 连接数据库 连 连 接 接 数 数 据 据 库 库 是 是 通 通 过 过 设 设 置 置 StoredProc StoredProc 组 组 件 件 的 的 DatabaseName DatabaseName属 属性 性来

21、 来实 实现 现的 的。当 当然 然可 可以 以用 用StoredProc StoredProc组 组件 件来 来直 直接 接连 连接 接数 数据 据库 库。如 如果 果用 用StoredProc StoredProc组 组件 件来 来连 连接 接数 数据 据库 库时 时,它 它的 的 DatabaseName DatabaseName属 属性 性可 可设 设为 为数 数据 据库 库的 的BDE BDE别 别名 名,当 当数 数据 据库 库是 是Paradox Paradox或 或 dBase dBase等 等数 数据 据库 库时 时,也 也可 可以 以是 是数 数据 据表 表所 所在 在的

22、的目 目录 录;如 如果 果用 用Database Database组 组件 件来 来连 连接 接数 数据 据库 库的 的话 话,StoredProc StoredProc控 控件 件的 的 DatabaseName DatabaseName属 属性 性可 可设 设置 置为 为应 应用 用程 程序 序专用的别名。专用的别名。如果在应用程序的设计阶段无法与数据库连接的话,可 如果在应用程序的设计阶段无法与数据库连接的话,可以通过忽略 以通过忽略DatabaseName DatabaseName属性而提供存储过程名、输入输 属性而提供存储过程名、输入输出参数和结果参数来创建一个存储过程控件。如果通

23、过这种 出参数和结果参数来创建一个存储过程控件。如果通过这种忽略 忽略DatabaseName DatabaseName属性的方法在设计阶段创建一个存储过 属性的方法在设计阶段创建一个存储过程控件,即该存储过程控件没有与服务器上的存储过程相连,程控件,即该存储过程控件没有与服务器上的存储过程相连,就必须通过 就必须通过StoredProcParametersEditor StoredProcParametersEditor对话框设置附加 对话框设置附加的输入参数信息,例如参数名和数据类型等等。的输入参数信息,例如参数名和数据类型等等。MicrosoftMicrosoft(2 2)执行存储过程)

24、执行存储过程 在 在完 完成 成了 了准 准备 备工 工作 作后 后,就 就可 可以 以调 调用 用StoredProc StoredProc组 组件 件的 的 ExecProc ExecProc方 方法 法来执行指定的存储过程。以下的程序代码简单地表示了这一过程。来执行指定的存储过程。以下的程序代码简单地表示了这一过程。StoredProc1.Params0.AsString:=Text;StoredProc1.Params0.AsString:=Text;StoredProc1.Prepare;StoredProc1.Prepare;StoredProc1.ExecProc;StoredP

25、roc1.ExecProc;如 如果 果没 没有 有进 进行 行准 准备 备工 工作 作(即 即没 没有 有调 调用 用StoredProc StoredProc组 组件 件的 的 Prepare Prepare方 方法 法)便 便执 执行 行存 存储 储过 过程 程,存 存储 储过 过程 程会 会自 自动 动完 完成 成准 准备 备操 操作 作,并 并在 在执 执行 行完 完存 存储 储过 过程 程后 后撤 撤消 消准 准备 备操 操作 作,释 释放 放占 占用 用的 的资 资源 源。但 但如 如果 果需 需要 要反 反复 复执 执行 行存 存储 储过 过程 程,为 为了 了提 提高 高效

26、效率 率应 应当 当自 自己 己调 调用 用Prepare Prepare过 过程 程,这 这样 样只 只需 需要 要在 在不 不用 用执 执行 行存 存储 储过 过程 程时 时调 调用 用一 一次 次 UnPrepare UnPrepare来释放资源即可。来释放资源即可。在一个存储过程执行完毕后,可以返回以下数据内容:在一个存储过程执行完毕后,可以返回以下数据内容:一 一个 个可 可以 以通 通过 过数 数据 据浏 浏览 览组 组件 件观 观察 察其 其记 记录 录的 的数 数据 据集 集,它 它通 通过 过数 数据 据源 源组 组件 件与 与存储过程相连;存储过程相连;输出参数;输出参数;

27、一个包含执行存储过程状态信息的结果参数。一个包含执行存储过程状态信息的结果参数。MicrosoftMicrosoft通过 通过ADOStoredProc ADOStoredProc 组件执行存储过程的核心代码如下 组件执行存储过程的核心代码如下 withADOStoredProc1do withADOStoredProc1dobegin beginProcedureName:=insert_cai_shouju;1;ProcedureName:=insert_cai_shouju;1;Active:=True;Active:=True;end;end;Parameters Parameters

28、属 属性 性:用 用来 来储 储存 存存 存储 储过 过程 程中 中输 输入 入和 和输 输出 出的 的参 参数 数,该 该属 属性 性值 值的 的类 类型 型为 为Tparameters Tparameters类 类型 型。在 在运 运行 行时 时可 可以 以通 通过 过访 访问 问Parameters Parameters属 属性 性值 值来 来动 动态 态设 设置 置参 参数 数 名 名、参 参 数 数 值 值 和 和 数 数 据 据 类 类 型 型。通 通 过 过 查 查 看 看 Parameters.Count Parameters.Count属 属 性 性 可 可 以 以 获 获

29、得 得Parameters Parameters属 属性 性中 中参 参数 数的 的个 个数 数。在 在设 设计 计状 状态 态下 下指 指定 定了 了ProcedureName ProcedureName属 属性 性以 以后 后,双 双击 击Object ObjectInspector Inspector中 中的 的Parameters Parameters属 属性 性,可 可以 以打 打开 开Parameters Parameters属 属性 性编 编辑 辑对 对话 话框 框,如 如图 图8-3 8-3所 所示 示。选 选中 中某 某个 个参 参数 数可 可以 以在 在Object Obj

30、ectInspector Inspector中 中访 访问 问该 该参 参数 数的 的属 属性 性,如图 如图8-4 8-4所示。所示。图8-3Parameters编辑对话框框图8-4在ObjectInspector中访问参数的属性MicrosoftPrepared Prepared 属性:用于在调用 属性:用于在调用ExecProc ExecProc 方法前,准备存储过程的参数 方法前,准备存储过程的参数,让远程的,让远程的 数据库服务器为存储过程分配资源并执行一些优化操作。在执行存储过程前将 数据库服务器为存储过程分配资源并执行一些优化操作。在执行存储过程前将 Prepared Prepa

31、red属性设置为 属性设置为True True,会提高应用程序的执行效率。会提高应用程序的执行效率。Parameters.ParamByName Parameters.ParamByName方法:用于根据指定的参数名字返回参数对象,方法:用于根据指定的参数名字返回参数对象,其语法定义 其语法定义为:FunctionParamByName(constValue:string):TParam;其中,Value是要访问的参数的名字。通过调用ParamByName方法可以在运行时设置输入参数或者获取输出参数的值。ExecProc方法:用来执行服务器上的存储过程的。在调用ExecProc方法前,首先要确

32、认Parameters属性中给出所有存储过程需要的参数,然后设置Prepared属性为True,绑定参数。最后调用ExecProc方法,当ExecProc方法将控制权重新交给应用程序时,如果存储过程返回了输出参数,它们将被存储在Parameters属性中。应用程序可以通过Parameters属性的参数表列索引,或者通过调用ParamByName方法访问这些 输出参数。MicrosoftMicrosoft8.2.1 创建存储过程 下面介绍在 下面介绍在Microsoft Microsoft公司的 公司的SQLServer SQLServer中是如何创建存储过程的。然后介 中是如何创建存储过程的。

33、然后介绍用查询组件怎样创建存储过程。绍用查询组件怎样创建存储过程。1 1 SQLServer SQLServer的存储过程 的存储过程 在 在SQLServer SQLServer数据库服务器中创建存储过程的方法如下。数据库服务器中创建存储过程的方法如下。CreateProcedure CreateProcedure存储过程名 存储过程名 参数名 参数名 数据类型 数据类型=默认值 默认值 OUTPUT OUTPUT,As AsBegin BeginSQL SQL语句块 语句块EndReturn EndReturn状态参数 状态参数 其中,其中,“”表示的是可选项,参数必须用 表示的是可选项,

34、参数必须用“”符号标识。符号标识。在 在SQL SQLServer Server数 数据 据库 库服 服务 务器 器中 中存 存储 储过 过程 程的 的参 参数 数分 分为 为:输 输入 入参 参数 数、输 输出 出参 参数和状态参数 数和状态参数。下面介绍一下如何来定义它们。下面介绍一下如何来定义它们。输 输入 入参 参数 数在 在存 存储 储过 过程 程名 名后 后的 的括 括号 号里 里定 定义 义,在 在参 参数 数名 名后 后给 给出 出参 参数的数据类型,在数据类型后可给出输入参数的默认值。输入参数是默认参数。数的数据类型,在数据类型后可给出输入参数的默认值。输入参数是默认参数。M

35、icrosoft输出参数在存储过程名后的括号里定义,和输入参数一样,在参数名后给参数 输出参数在存储过程名后的括号里定义,和输入参数一样,在参数名后给参数 的类型 的类型,在数据类型后可给出参数的默认值,在输出参数后须用关键字 在数据类型后可给出参数的默认值,在输出参数后须用关键字OUT OUT标识 标识 状态参数不需要定义,在存储过程中只允许有一个整型状态参数,用 状态参数不需要定义,在存储过程中只允许有一个整型状态参数,用Return Return 关键字标识,后面是参数值。参数可取的参数值和含义如表 关键字标识,后面是参数值。参数可取的参数值和含义如表8-3 8-3所示。所示。表 表8-

36、3 8-3 存储过程状态值 存储过程状态值状态值含义状态值含义0 成功返回-3 选中的进程死锁-1 丢失引用对象-4 权限错误-2 数据类型不匹配 如果没有在存储过程中使用Return定义返回状态值,存储过程会自动定义一个RETURN_V ALUE参数,它在Params属性中的序号为0。下面举一个简单的例子来说明在SQLServer数据库服务器中怎样定义存储过程,代码如下。MicrosoftCreateProceduremystoredproc CreateProceduremystoredproc studidchar(6)studidchar(6)As AsBegin BeginSelec

37、tstudnameformstudinfowherestudid=studid Selectstudnameformstudinfowherestudid=studidEnd;End;除了上述方法定义存储过程之外,还可以利用 除了上述方法定义存储过程之外,还可以利用SQLServer SQLServer数据库 数据库“工具 工具”菜单下的 菜单下的“向导 向导”子菜单项自动生成存储过程,自动生成的存储过 子菜单项自动生成存储过程,自动生成的存储过程有三类:插入、删除和更新。具体实现方法可参考 程有三类:插入、删除和更新。具体实现方法可参考SQLServer SQLServer的相关书 的相关书

38、籍。籍。2 2用查询组件创建存储过程 用查询组件创建存储过程 因为存储过程是预编译的 因为存储过程是预编译的SQL SQL代码,所以创建存储过程时需要使用 代码,所以创建存储过程时需要使用SQL SQL语句,于是要用到 语句,于是要用到Query Query组件的 组件的SQL SQL属性。如果需要在存储过程中带 属性。如果需要在存储过程中带有参数,那么须将 有参数,那么须将Query Query组件的 组件的 ParamCheck ParamCheck属性设为 属性设为False False。下面举一个例子,说明用 下面举一个例子,说明用SQL SQL语句在 语句在SQLServer SQL

39、Server中怎样创建一个存储过程。中怎样创建一个存储过程。MicrosoftWithQuery1do WithQuery1do Begin BeginParamCheck:=False;ParamCheck:=False;WithSQLdo WithSQLdoBegin BeginClear;Clear;Add(CreateProceduremystoredproc);Add(CreateProceduremystoredproc);Add(studidchar(6);Add(studidchar(6);Add(As);Add(As);Add(Begin);Add(Begin);Add(Se

40、lectstudnameformstudinfowherestudid=studid);Add(Selectstudnameformstudinfowherestudid=studid);Add(End);Add(End);End;End;ExcelSQL;ExcelSQL;End;End;另外,也可以利用 另外,也可以利用SQLExplorer SQLExplorer来创建存储过程。来创建存储过程。Microsoft8.2.2 修改存储过程 有时候,随着需求的改变,需要修改以前创建的存储过程,一般的服务 有时候,随着需求的改变,需要修改以前创建的存储过程,一般的服务器都允许修改存储过程。下面

41、介绍 器都允许修改存储过程。下面介绍Microsoft Microsoft公司的 公司的SQLServer SQLServer数据库服务器 数据库服务器中是怎样修改存储过程的。中是怎样修改存储过程的。1 1修改 修改SQLServer SQLServer的存储过程 的存储过程 在 在SQLServer SQLServer数据库服务器中修改存储过程的方法如下。数据库服务器中修改存储过程的方法如下。AlterProcedure AlterProcedure存储过程名 存储过程名 参数名 参数名 数据类型 数据类型=默认值 默认值 OUTPUT OUTPUT,As AsBegin BeginSQL

42、SQL语句块 语句块EndReturn EndReturn状态参数 状态参数 其中,其中,“”表示的是可选项,表示的是可选项,2 2用 用Query Query组件修改存储过程的参数 组件修改存储过程的参数 其 其实 实,同 同样 样也 也可 可以 以利 利用 用Query Query组 组件 件的 的SQL SQL属 属性 性来 来修 修改 改存 存储 储过 过程 程。如 如果 果存 存储 储过程中有参数的话,必须将 过程中有参数的话,必须将Query Query的 的ParamCheck ParamCheck属性设为 属性设为False False。MicrosoftMicrosoft执行

43、存储过程前,要声明输出变量。在执行存储过程的时候,既要给定输入 执行存储过程前,要声明输出变量。在执行存储过程的时候,既要给定输入参数值,也要用 参数值,也要用OUTPUT OUTPUT关键字来标识输出参数变量,用来存储输 关键字来标识输出参数变量,用来存储输出参数的。出参数的。返回值。如果有多个参数,则它们之间用逗号分开。返回值。如果有多个参数,则它们之间用逗号分开。假 假设 设SQL SQL Server Server数 数据 据库 库服 服务 务器 器上 上有 有一 一个 个存 存储 储过 过程 程是 是ShowInfoproc ShowInfoproc,它 它需 需要 要传 传递 递一

44、 一个 个字 字符 符型 型参 参数 数iStudID iStudID,然 然后 后从 从数 数据 据表 表ShowInfo ShowInfo中 中检 检索 索StudID StudID字 字段 段为 为指 指定 定值 值的 的StudName StudName、StudScore StudScore等 等字 字段 段,所 所有 有检 检索 索出 出的 的StudName StudName、StudScore StudScore字段构成一个数据集。创建存储过程的代码如下 字段构成一个数据集。创建存储过程的代码如下CreateProcedureShowInfoprociStudIDchar(6)

45、as/begin和end也可以省略selectStudName,StudScorefromShowInfowhereStudID=iStudID 如果想从上面的存储过程中检索结果集,可以将Query组件的SQL属性设置 为以下的SQL语句。ExecuteShowInfoproc990071;使用Query组件来检索存储过程的结果数据集时有一个好处就是,既可以检索出整个结果数据集,也可以从结果数据集中选择所需的记录显示。Microsoft2 2 输出参数查询 输出参数查询 如果存储过程返回为数据集时,可以利用 如果存储过程返回为数据集时,可以利用Query Query组件从数据集 组件从数据集中

46、查询需要的数据。例如,存储过程利用输出参数返回一些记录,中查询需要的数据。例如,存储过程利用输出参数返回一些记录,可以利用 可以利用Query Query组件将记录中的某些字段的数值查询出来。组件将记录中的某些字段的数值查询出来。如果是 如果是SQLServer SQLServer数据库服务器上的存储过程,数据库服务器上的存储过程,Query Query组件的 组件的SQL SQL属性通常设置为如下的 属性通常设置为如下的SQL SQL语句。语句。Declare Declare输出参数变量 输出参数变量 数据类型 数据类型,Execute Execute存储过程名 存储过程名 输入参数值 输入

47、参数值,输出参数变量 输出参数变量 OUTPUT,OUTPUT,假如 假如SQLServer SQLServer数据库服务器上的 数据库服务器上的StudThings StudThings数据库上有一 数据库上有一存储过程 存储过程GetStudInSp GetStudInSp,通过输出参数 通过输出参数TotalSpending TotalSpending返回指定条 返回指定条件下 件下Spending Spending字段的总和,用输出参数 字段的总和,用输出参数TotalBusary TotalBusary来输出指定条 来输出指定条件下 件下Busary Busary字段的总和。操作数据

48、表 字段的总和。操作数据表StudInSp StudInSp的存储过程 的存储过程GetStudInSp GetStudInSp代码如下。代码如下。Create Procedure GetStudInSp Create Procedure GetStudInSp iStudID char,TotalSpending INT OUT,TotalBusary INT OUT iStudID char,TotalSpending INT OUT,TotalBusary INT OUT as/begin as/begin和 和end end也可以省略 也可以省略 select TotalSpendin

49、g=SUM(Spending),TotalBusary=SUM(Busary)select TotalSpending=SUM(Spending),TotalBusary=SUM(Busary)from StudInSp where StudID=iStudID from StudInSp where StudID=iStudIDMicrosoft创建好存储过程后,现在就可以执行存储过程并从结果中查询输出参数 创建好存储过程后,现在就可以执行存储过程并从结果中查询输出参数TotalSpending TotalSpending或 或TotalBusary TotalBusary的值,不过需要将

50、的值,不过需要将Query Query组件的 组件的SQL SQL属性设置如 属性设置如下 下DeclareTotalSpendingINT,TotalBusaryINT DeclareTotalSpendingINT,TotalBusaryINTExecuteGetStudInSp990071,TotalSpendingOUTPUT,TotalBusary ExecuteGetStudInSp990071,TotalSpendingOUTPUT,TotalBusaryOUTPUT OUTPUTSelectTotalSpending/SelectTotalSpending/查询输出参数 查询输

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com