版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章存储过程12/17/20221SQLServer2005第9章存储过程12/13/20221SQLServer存储过程概述
在大型数据库系统中,存储过程具有很重要的作用。存储过程是SQL语句和流程控制语句的集合。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。SQLServer2005不仅提供了用户自定义存储过程的功能,而且也提供了许多可作为工具使用的系统存储过程。。12/17/20222SQLServer2005存储过程概述在大型数据库系统中,存储过程具有很重要的作用。存储过程的基本概念
存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。12/17/20223SQLServer2005存储过程的基本概念存储过程(StoredProcedur数据库技术及应用第9章-存储过程课件数据库技术及应用第9章-存储过程课件存储过程分类Transact-SQLTransact-SQL存储过程是指保存的Transact-SQL语句集合,可以接受和返回用户提供的参数。例如,存储过程中可能包含根据客户端应用程序提供的信息在一个或多个表中插入新行所需的语句。存储过程也可能从数据库向客户端应用程序返回数据。例如,电子商务Web应用程序可能使用存储过程根据联机用户指定的搜索条件返回有关特定产品的信息。CLRCLR存储过程是指对Microsoft.NETFramework公共语言运行时(CLR)方法的引用,可以接受和返回用户提供的参数。它们在.NETFramework程序集中是作为类的公共静态方法实现的。12/17/20226SQLServer2005存储过程分类Transact-SQL12/13/20226S存储过程分类扩展存储过程扩展存储过程允许您使用编程语言(例如C)创建自己的外部例程。扩展存储过程是指MicrosoftSQLServer的实例可以动态加载和运行的DLL。扩展存储过程直接在SQLServer的实例的地址空间中运行,可以使用SQLServer扩展存储过程API完成编程。12/17/20227SQLServer2005存储过程分类扩展存储过程12/13/20227SQLSer存储过程的优点
与其他应用程序共享应用程序逻辑,因而确保了数据访问和修改的一致性。存储过程可以封装业务功能,在存储过程中可以在同一位置改变封装的业务规则和策略,所有的客户端可以使用相同的存储过程来确保数据访问和修改的一致性防止把数据库中表的细节暴露给用户。如果一组存储过程支持用户需要执行的所有业务功能,用户就不必直接访问表提供了安全机制。即使是没有访问存储过程引用的表或视图的权限的用户,也可以被授权执行该存储过程12/17/20228SQLServer2005存储过程的优点与其他应用程序共享应用程序逻辑,因而确保了数存储过程的优点
改进性能。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,因此速度相对要慢一些。减少网络流量。用户可以通过发送一个单独的语句实现一个复杂的操作,而不需要在网络上发送几百个Transact-SQL代码,这样减少了在服务器和客户机之间传递的请求的数量12/17/20229SQLServer2005存储过程的优点改进性能。如果某一操作包含大量的Transa创建存储过程在图形界面下创建存储过程打开MicrosoftSQLServerManagerStudio,并连接数据库。在对象资源管理器中,依次展开数据库|Northwind|可编程性,选中存储过程点击鼠标右键,选择新建存储过程系统将在查询编辑器中打开存储过程模版。在模版中输入存储过程的名称,设置相应的参数。也可以通过菜单“查询”|“指定模版参数的值”进行设置12/17/202210SQLServer2005创建存储过程在图形界面下创建存储过程12/13/20221012/17/202211SQLServer200512/13/202211SQLServer200512/17/202212SQLServer200512/13/202212SQLServer2005指定模版参数的值窗口的前三行分别是创建人、创建时间、描述,是对存储过程进行注释。从第四行开始,分别指定存储过程名称、参数名称、数据类型、参数的缺省值。12/17/202213SQLServer2005指定模版参数的值窗口的前三行分别是创建人、创建时间、描述,是删除掉参数@p2,并编写相应的SQL语句。SQL语句如下:BEGIN --SETNOCOUNTONaddedtopreventextraresultsetsfrom --interferingwithSELECTstatements. SETNOCOUNTON;--Insertstatementsforprocedurehere SELECT[OrderDetails].*FROM[OrderDetails]WHERE(OrderID=@orderID)END点击工具栏上的执行按钮来创建存储过程,如没有错误,消息框中则显示“命令已成功完成”。12/17/202214SQLServer2005删除掉参数@p2,并编写相应的SQL语句。SQL语句如下:1用SQL语句创建存储过程
使用CREATEPROCEDURE语句可以创建存储过程。其语法如下:CREATEPROC[EDURE]procedure_name[;number][{@parameterdata_type}[VARYING][=default][OUTPUT]][,...n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}][FORREPLICATION]ASsql_statement[...n]12/17/202215SQLServer2005用SQL语句创建存储过程使用CREATEPROCEDUR只返回单一记录集的存储过程。查询表Categories的内容的存储过程USENorthwind;GOCREATEPROCGETCATEGORIESASSELECT*FROMCategories12/17/202216SQLServer2005只返回单一记录集的存储过程。12/13/202216SQL使用带有通配符参数的简单过程以下存储过程只从视图中返回指定的一些雇员(提供名和姓)及其职务和部门名称。此存储过程模式与所传递的参数相匹配;或者,如果未提供参数,则使用预设的默认值(以字母D打头的姓)。USENorthwind;GOCREATEPROCEDUREusp_GetEmployees@lastnamevarchar(40)='D%',@firstnamevarchar(20)='%'ASSELECTLastName,FirstName,Title,Address,CityFROMdbo.EmployeesWHEREFirstNameLIKE@firstnameANDLastNameLIKE@lastname;GO12/17/202217SQLServer2005使用带有通配符参数的简单过程12/13/202217SQL在存储过程中使用输入参数创建名为SalesbyYear的存储过程,返回在两个指定日期之间的所有销售额。CREATEprocedureSalesbyYear @Beginning_DateDateTime,@Ending_DateDateTimeASIF@Beginning_DateISNULLOR@Ending_DateISNULLBEGINRAISERROR('NULLvaluesarenotallowed',14,1)RETURNENDSELECTOrders.ShippedDate,Orders.OrderID,"OrderSubtotals".Subtotal,DATENAME(yy,ShippedDate)ASYearFROMOrdersINNERJOIN"OrderSubtotals"ONOrders.OrderID="OrderSubtotals".OrderIDWHEREOrders.ShippedDateBetween@Beginning_DateAnd@Ending_Date;GO12/17/202218SQLServer2005在存储过程中使用输入参数12/13/202218SQLSe执行存储过程建立一个存储过程以后,可以使用EXECUTE语句来执行这个存储过程。EXECUTE语句的语法如下:[{EXEC|EXECUTE}]
{
[@return_status=]
{procedure_name[;number]|@procedure_name_var}
[[@parameter=]{value|@variable[OUTPUT]|[DEFAULT]}]
[,...n]
[WITHRECOMPILE]
}12/17/202219SQLServer2005执行存储过程建立一个存储过程以后,可以使用EXECUTE语句执行存储过程使用EXECUTE语句时应注意以下几点:EXECUTE语句可以用于执行系统存储过程用户定义存储过程或扩展存储过程,同时支持Transact-SQL批处理内的字符串的执行。如果EXECUTE语句是批处理今的第一条语句,那么省略EXECUTE关键字也可以执行该存储过程向存储过程传递参数时,如果使用“@参数=值”的形式,则可以按任何顺序来提供参数,还可以省略那些已经提供默认值的参数。一旦以“@参数=值”形式提供了一个参数,就必须按这种形式提供后面所有的参数。如果不是以“@参数=值”形式来提供参数,则必须按照CREATEPROCEDURE语句中结出的顺序提供参数。12/17/202220SQLServer2005执行存储过程使用EXECUTE语句时应注意以下几点:12/1执行存储过程虽然可以省略已提供默认值的参数,但只能截断参数列表。例如,如果—个存储过程有五个参数,可以省略第四个和第五个参数,但不能跳过第四个参数而仍然包含第五个参数,除非以“@参数=值”形式提供参数。如果在建立存储过程时定义了参数的默认值,那么下列情况下将使用默认值:执行存储过程时未指定该参数的值;将Default关键字指定为该参数的值。如果在存储过程中使用了带Like关键字的参数名称,则提供的默认值必须是常量,并且可以包含%、_、[]、[^]通配符。12/17/202221SQLServer2005执行存储过程虽然可以省略已提供默认值的参数,但只能截断参数列通过参数名传递值执行创建的存储过程SalesbyYear。USENorthwind;GOEXECUTEdbo.SalesbyYear@Beginning_Date='1998-5-1',@Ending_Date='1998-5-6';GO通过定位传递值EXECUTEdbo.SalesbyYear'1998-5-1','1998-5-6';12/17/202222SQLServer2005通过参数名传递值12/13/202222SQLServer执行带有通配符参数的存储过程执行创建的存储过程usp_GetEmployees。不指定参数,则使用默认参数值执行。USENorthwind;GOEXECUTEusp_GetEmployeesGO结果如下:LastNameFirstNameTitleAddressCity--------------------------------------------------------------DavolioNancySalesRepresentative507-20thAve.E.Apt.2ASeattleDodsworthAnneSalesRepresentativeHoundstoothRd.London12/17/202223SQLServer2005执行带有通配符参数的存储过程12/13/202223SQL执行简单存储过程执行存储过程GETCATEGORIES。USENorthwind;GOEXECUTEdbo.GETCATEGORIES;GO12/17/202224SQLServer2005执行简单存储过程12/13/202224SQLServer修改存储过程
使用ALTERPROCEDURE语句修改存储过程,其语法如下:ALTERPROC[EDURE]procedure_name[;number][{@parameterdata_type}[VARYING][=default][OUTPUT]][,...n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}][FORREPLICATION]ASsql_statement[...n]12/17/202225SQLServer2005修改存储过程使用ALTERPROCEDURE语句修改存重命名存储过程
在MicrosoftSQLServerManagerStudio的对象资源管理器中重命名存储过程很简单,选择要重命名的存储过程,单击右键,在弹出的菜单中选择“重命名”命令,就可以修改了。使用系统存储过程sp_rename也可以重命名存储过程。其语法如下:sp_rename'object_name','new_name'[,'object_type']12/17/202226SQLServer2005重命名存储过程在MicrosoftSQLServer重命名存储过程将Northwind数据库中存储过程SalesByCategory重命名为NewNameUSENorthwind;GOEXECsp_rename'dbo.SalesByCategory','NewName','PROCEDURE';GO建议:不要使用此语句来重命名存储过程,而是删除该对象,然后使用新名称重新创建该对象。
12/17/202227SQLServer2005重命名存储过程将Northwind数据库中存储过程Sales删除存储过程
使用DROPPROCEDURE语句来删除用户定义的存储过程。其语法如下:DROPPROCEDURE{procedure}[,…n]将Northwind数据库中存储过程SalesByCategory删除USENorthwind;GODROPPROCEDUREdbo.SalesByCategoryGO12/17/202228SQLServer2005删除存储过程使用DROPPROCEDURE语句来删除用户小结本章主要介绍了:存储过程的基本概念如何创建、修改、删除和执行存储过程,以及重命名存储过程。掌握使用图形界面和代码创建、修改和删除存储过程的方法。12/17/202229SQLServer2005小结本章主要介绍了:12/13/202229SQLServ第9章存储过程12/17/202230SQLServer2005第9章存储过程12/13/20221SQLServer存储过程概述
在大型数据库系统中,存储过程具有很重要的作用。存储过程是SQL语句和流程控制语句的集合。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。SQLServer2005不仅提供了用户自定义存储过程的功能,而且也提供了许多可作为工具使用的系统存储过程。。12/17/202231SQLServer2005存储过程概述在大型数据库系统中,存储过程具有很重要的作用。存储过程的基本概念
存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。12/17/202232SQLServer2005存储过程的基本概念存储过程(StoredProcedur数据库技术及应用第9章-存储过程课件数据库技术及应用第9章-存储过程课件存储过程分类Transact-SQLTransact-SQL存储过程是指保存的Transact-SQL语句集合,可以接受和返回用户提供的参数。例如,存储过程中可能包含根据客户端应用程序提供的信息在一个或多个表中插入新行所需的语句。存储过程也可能从数据库向客户端应用程序返回数据。例如,电子商务Web应用程序可能使用存储过程根据联机用户指定的搜索条件返回有关特定产品的信息。CLRCLR存储过程是指对Microsoft.NETFramework公共语言运行时(CLR)方法的引用,可以接受和返回用户提供的参数。它们在.NETFramework程序集中是作为类的公共静态方法实现的。12/17/202235SQLServer2005存储过程分类Transact-SQL12/13/20226S存储过程分类扩展存储过程扩展存储过程允许您使用编程语言(例如C)创建自己的外部例程。扩展存储过程是指MicrosoftSQLServer的实例可以动态加载和运行的DLL。扩展存储过程直接在SQLServer的实例的地址空间中运行,可以使用SQLServer扩展存储过程API完成编程。12/17/202236SQLServer2005存储过程分类扩展存储过程12/13/20227SQLSer存储过程的优点
与其他应用程序共享应用程序逻辑,因而确保了数据访问和修改的一致性。存储过程可以封装业务功能,在存储过程中可以在同一位置改变封装的业务规则和策略,所有的客户端可以使用相同的存储过程来确保数据访问和修改的一致性防止把数据库中表的细节暴露给用户。如果一组存储过程支持用户需要执行的所有业务功能,用户就不必直接访问表提供了安全机制。即使是没有访问存储过程引用的表或视图的权限的用户,也可以被授权执行该存储过程12/17/202237SQLServer2005存储过程的优点与其他应用程序共享应用程序逻辑,因而确保了数存储过程的优点
改进性能。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,因此速度相对要慢一些。减少网络流量。用户可以通过发送一个单独的语句实现一个复杂的操作,而不需要在网络上发送几百个Transact-SQL代码,这样减少了在服务器和客户机之间传递的请求的数量12/17/202238SQLServer2005存储过程的优点改进性能。如果某一操作包含大量的Transa创建存储过程在图形界面下创建存储过程打开MicrosoftSQLServerManagerStudio,并连接数据库。在对象资源管理器中,依次展开数据库|Northwind|可编程性,选中存储过程点击鼠标右键,选择新建存储过程系统将在查询编辑器中打开存储过程模版。在模版中输入存储过程的名称,设置相应的参数。也可以通过菜单“查询”|“指定模版参数的值”进行设置12/17/202239SQLServer2005创建存储过程在图形界面下创建存储过程12/13/20221012/17/202240SQLServer200512/13/202211SQLServer200512/17/202241SQLServer200512/13/202212SQLServer2005指定模版参数的值窗口的前三行分别是创建人、创建时间、描述,是对存储过程进行注释。从第四行开始,分别指定存储过程名称、参数名称、数据类型、参数的缺省值。12/17/202242SQLServer2005指定模版参数的值窗口的前三行分别是创建人、创建时间、描述,是删除掉参数@p2,并编写相应的SQL语句。SQL语句如下:BEGIN --SETNOCOUNTONaddedtopreventextraresultsetsfrom --interferingwithSELECTstatements. SETNOCOUNTON;--Insertstatementsforprocedurehere SELECT[OrderDetails].*FROM[OrderDetails]WHERE(OrderID=@orderID)END点击工具栏上的执行按钮来创建存储过程,如没有错误,消息框中则显示“命令已成功完成”。12/17/202243SQLServer2005删除掉参数@p2,并编写相应的SQL语句。SQL语句如下:1用SQL语句创建存储过程
使用CREATEPROCEDURE语句可以创建存储过程。其语法如下:CREATEPROC[EDURE]procedure_name[;number][{@parameterdata_type}[VARYING][=default][OUTPUT]][,...n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}][FORREPLICATION]ASsql_statement[...n]12/17/202244SQLServer2005用SQL语句创建存储过程使用CREATEPROCEDUR只返回单一记录集的存储过程。查询表Categories的内容的存储过程USENorthwind;GOCREATEPROCGETCATEGORIESASSELECT*FROMCategories12/17/202245SQLServer2005只返回单一记录集的存储过程。12/13/202216SQL使用带有通配符参数的简单过程以下存储过程只从视图中返回指定的一些雇员(提供名和姓)及其职务和部门名称。此存储过程模式与所传递的参数相匹配;或者,如果未提供参数,则使用预设的默认值(以字母D打头的姓)。USENorthwind;GOCREATEPROCEDUREusp_GetEmployees@lastnamevarchar(40)='D%',@firstnamevarchar(20)='%'ASSELECTLastName,FirstName,Title,Address,CityFROMdbo.EmployeesWHEREFirstNameLIKE@firstnameANDLastNameLIKE@lastname;GO12/17/202246SQLServer2005使用带有通配符参数的简单过程12/13/202217SQL在存储过程中使用输入参数创建名为SalesbyYear的存储过程,返回在两个指定日期之间的所有销售额。CREATEprocedureSalesbyYear @Beginning_DateDateTime,@Ending_DateDateTimeASIF@Beginning_DateISNULLOR@Ending_DateISNULLBEGINRAISERROR('NULLvaluesarenotallowed',14,1)RETURNENDSELECTOrders.ShippedDate,Orders.OrderID,"OrderSubtotals".Subtotal,DATENAME(yy,ShippedDate)ASYearFROMOrdersINNERJOIN"OrderSubtotals"ONOrders.OrderID="OrderSubtotals".OrderIDWHEREOrders.ShippedDateBetween@Beginning_DateAnd@Ending_Date;GO12/17/202247SQLServer2005在存储过程中使用输入参数12/13/202218SQLSe执行存储过程建立一个存储过程以后,可以使用EXECUTE语句来执行这个存储过程。EXECUTE语句的语法如下:[{EXEC|EXECUTE}]
{
[@return_status=]
{procedure_name[;number]|@procedure_name_var}
[[@parameter=]{value|@variable[OUTPUT]|[DEFAULT]}]
[,...n]
[WITHRECOMPILE]
}12/17/202248SQLServer2005执行存储过程建立一个存储过程以后,可以使用EXECUTE语句执行存储过程使用EXECUTE语句时应注意以下几点:EXECUTE语句可以用于执行系统存储过程用户定义存储过程或扩展存储过程,同时支持Transact-SQL批处理内的字符串的执行。如果EXECUTE语句是批处理今的第一条语句,那么省略EXECUTE关键字也可以执行该存储过程向存储过程传递参数时,如果使用“@参数=值”的形式,则可以按任何顺序来提供参数,还可以省略那些已经提供默认值的参数。一旦以“@参数=值”形式提供了一个参数,就必须按这种形式提供后面所有的参数。如果不是以“@参数=值”形式来提供参数,则必须按照CREATEPROCEDURE语句中结出的顺序提供参数。12/17/202249SQLServer2005执行存储过程使用EXECUTE语句时应注意以下几点:12/1执行存储过程虽然可以省略已提供默认值的参数,但只能截断参数列表。例如,如果—个存储过程有五个参数,可以省略第四个和第五个参数,但不能跳过第四个参数而仍然包含第五个参数,除非以“@参数=值”形式提供参数。如果在建立存储过程时定义了参数的默认值,那么下列情况下将使用默认值:执行存储过程时未指定该参数的值;将Default关键字指定为该参数的值。如果在存储过程中使用了带Like关键字的参数名称,则提供的默认值必须是常量,并且可以包含%、_、[]、[^]通配符。12/17/202250SQLServer2005执行存储过程虽然可以省略已提供默认值的参数,但只能截断参数列通过参数名传递值执行创建的存储过程SalesbyYear。USENorthwind;GOEXECUTEdbo.SalesbyYear@Beginning_Date='1998-5-1',@Ending_Date='1998-5-6';GO通过定位传递值EXECUTEdbo.SalesbyYear'1998-5-1','1998-5-6';12/17/202251SQLServer2005通过参数名传递值12/13/202222SQLServer执行带有通配符参数的存储过程执行创建的存储过程usp_GetEmployees。不指定参数,则使用默认参数值执行。USENorthwind;GOEXECUTEusp_GetEmployeesGO结果如下:LastNameFirstNameTitleAddressCity--------------------------------------------------------------DavolioNancySalesRepresentative507-20thAve.E.Apt.2ASeattleDodsworthAnneSalesRepresentativeHoun
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮阴师范学院《数字电子技术基础》2021-2022学年期末试卷
- 淮阴师范学院《基础和声(2)》2022-2023学年第一学期期末试卷
- 淮阴师范学院《证券法》2023-2024学年第一学期期末试卷
- 淮阴工学院《税务代理》2021-2022学年第一学期期末试卷
- 淮阴工学院《设施规划与物流分析》2023-2024学年第一学期期末试卷
- DB4414T+30-2024柑橘种质资源圃建设和管理规范
- DB2310-T 141-2024红松苗芽接培育技术规程
- 文书模板-《小区停车自治管理方案》
- 钢结构大棚安拆专项施工方案
- 林业项目融资与资本运作考核试卷
- 医疗绿色通道医联体协议书
- 高考名句名篇《菩萨蛮 书江西造口壁》课件
- 兽医病理学智慧树知到期末考试答案章节答案2024年浙江农林大学
- 大学生生涯发展展示 (修改版)
- JT-T 1495-2024 公路水运危险性较大工程专项施工方案编制审查规程
- 教科版小学科学六年级上学期期中考试检测试卷与答案(共5套)
- 运动安全与健康智慧树知到期末考试答案章节答案2024年浙江大学
- 模具设计与制造生涯规划报告
- (完整版)四宫格数独题目204道(可直接打印)及空表(一年级数独题练习)
- 1.1信息社会及其特征课件高中信息技术粤教版必修2
- 小学科学教科版六年级上册全册教案(2023秋)
评论
0/150
提交评论