第08章 存储过程、触发器、事务.pptx
;;1、存储过程的概念与优点;2、存储过程的分类;在SQLServer2016中创建存储过程有两种方法:一种是直接使用T-SQL的CREATEPROCEDURE语句;另一种是借助SSMS提供的创建存储过程命令模板(参见例8-2)。
语法摘要
CREATE{PROC|PROCEDURE}[schema_name.]procedure_name[;number]
[{@parameter[type_schema_name.]data_type}[VARYING][=default][[OUT[PUT]][,...n]
[WITHprocedure_option[,...n]
[FORREPLICATION]
AS{sql_statement[;][...n]|method_specifier}[;]
;例8-1在数据库FamilyFinancingSystem中使用CREATEPROCEDURE语句创建一个不带参数存储过程proc_test,该存储过程2019年的所有收入项目。
USEFamilyFinancingSystem
GO
CREATEPROCEDUREproc_test
AS
SELECTFM.FamilyMemberName姓名,FI.FinanceItemName收支项,FD.FinanceTypeKey收支类型,FD.FinanceAmount金额,FD.FinanceRemark备注
FROMFamilyMemberFMJOINFinanceDetailFD
ONFM.FamilyMemberID=FD.FamilyMemberID
JOINFinanceItemFIONFD.FinanceItemKey=FI.FinanceItemKey
WHEREFD.FinanceTypeKey=INANDYEAR(FD.input_date)=2019ANDFD.is_deleted=0
;例8-2使用SSMS的对象资源管理器提供的创建存储过程命令模板创建存储过程,该存储过程完成与例8-1所创建的存储过程相同的任务。
;使用T-SQL的EXECUTE语句调用存储过程。语法摘要如下:
[{EXEC|EXECUTE}]
{[@return_status=]
{module_name[;number]|@module_name_var}
[[@parameter=]{value|@variable[OUTPUT]|[DEFAULT]}][,...n]
[WITHRECOMPILE]}[;]
;8.1.3调用存储过程;在SQLServer2016中,有多种方法可以查看几乎所有的用户自定义数据库对象。下面介绍2类方便、快捷的方法。
①使用对象资源管理器。在对象资源管理器上用鼠标右键单击要查看的数据库对象,然后在自动弹出的快捷菜单中选择“编写××脚本为(S)>CREATE到(C)>新查询编辑器窗口(N)”(××表示数据库对象类别,如触发器、表等),即可查询编辑器窗口看到数据库对象的源代码等信息。
;例8-4使用对象资源管理器查看“proc_test”存储过程。
步骤:选择“对象资源管理器\数据库\_教学库\可编程性\存储过程\dbo.proc_test”→鼠标右键单击→在弹出的快捷菜单中选择“编写存储过程脚本为(S)>CREATE到(C)>新查询编辑器窗口(N)”→系统??出一个新的查询编辑器窗口,其内的CREATEPROCEDURE语句内即包含了当前“proc_test”存储过程的源代码,如图8-3所示。查看完毕后关闭查询编辑器窗口(不要执行)。
;②使用系统存储过程sp_helptext。存储过程被创建后,其名字存在系统表sysobjects中,源代码存在系统表syscomments中。用户可通过SQLServer提供的sp_help、sp_helptext、sp_depends等系统存储过程查看用户自定义存储过程、触发器(DDL触发器除外)的相关属性、源代码、关系依赖等信息。
●语法摘要:sp_helptext[@objname=]object_name
●参数摘要与说明:[@objname=]name:架构范围内的用户定义对象名称。
●备注:sp_helptext显示在多行中创建对象的定义。每行含255个字符的T-SQL定义。
;例8-5使用系统存储过程sp_helptext查看数据库中存储的“proc_test”存储过程,如图8-4所示。
sp_helptextproc_test
;在SQ