欢迎来到天天文库
浏览记录
ID:50026703
大小:1.04 MB
页数:99页
时间:2020-03-07
《SQL Server 2000管理与应用开发教程 教学课件 作者 王晶 第9章.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、SQLServer2000管理及应用开发教程授课教师:职务:第9章存储过程、触发器和游标课程描述本章将介绍SQLServer2000中3个常用的对象,即存储过程、触发器和游标。使用SQLServer2000开发数据库应用系统时,会经常用到这些对象。本章知识点存储过程触发器游标概述9.1存储过程使用Transact-SQL程序时,可用如下两种方法存储和执行程序:可以在本地存储程序,并创建向SQLServer发送命令并处理结果的应用程序。也可以将程序在SQLServer中存储为存储过程,创建执行存储过程及处理结果的应用程序。9.
2、1.1存储过程概述存储过程是Transact-SQL语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。使用SQLServer中的存储过程而不使用存储在客户计算机本地的Transact-SQL程序包括如下的优势:1.允许模块化程序设计2.可以更快地执行3.减少网络流量4.可作为安全机制使用9.1.2创建存储过程1.使用CREATEPROCEDURE语句2.使用企业管理器中的菜单命令1.使用CREATEPROCEDURE语句CREATEPROCEDURE语句的作用是创建存储过程。它的语法结构如下:CREATEPR
3、OC[EDURE]存储过程名[{@parameterdata_type}[VARYING][=default][OUTPUT]]ASSQL语句[...n]【例9.1】创建存储过程IncreaseWage,它的功能是将表EmpInfo中所有员工的工资数据增加10%,具体语句如下:USEHrSystemGOCREATEPROCEDUREIncreaseWageASUPDATEEmpInfoSETWage=Wage*1.1GO2.使用企业管理器中的菜单命令在企业管理器中,展开要创建存储过程的数据库,例如本书使用的数据库HrSyst
4、em。右击“存储过程”节点,然后单击“新建存储过程”命令,打开新建存储过程对话框。9.1.3执行存储过程使用Transact-SQL语言的EXCUTE语句可以执行存储过程。EXCUTE语句的语法结构如下:[[EXEC[UTE]]{[@return_status=]{<存储过程名>
5、@procedure_name_var}[[@parameter=]{value
6、@variable[OUTPUT]
7、[DEFAULT]}[,...n][WITHRECOMPILE]【例9.2】执行存储过程IncreaseWage,并查看执行结果,
8、具体语句如下:USEHrSystemGOEXECIncreaseWageSELECT*FROMEmpInfoGO9.1.4存储过程的参数在定义存储过程时,可以同时指定参数,格式如下:@参数名数据类型[=默认值][OUTPUT][,...n]【例9.3】创建存储过程add_proc,它的功能计算两个参数之和并将其输出,具体语句如下:CREATEPROCEDUREadd_proc@num1INT=0,@num2INT=0ASDECLARE@num3INTSET@num3=@num1+@num2PRINT@num3【例9.3】存储
9、过程add_proc定义了两个参数@num1和@num2,它们都是输入参数,参数类型为INT,默认值为0。在查询分析器中指定上面的命令,创建存储过程add_proc。然后再执行如下命令,运行存储过程:EXECadd_procGO运行结果为:0【例9.3】因为在执行存储过程时没有带参数,所以两个参数的值都被设置为默认值0,它们的和等于0。在查询分析器中指定上面的命令,创建存储过程add_proc。然后再执行如下命令,运行存储过程:EXECadd_proc13,25GO运行结果为:38【例9.4】创建存储过程add_proc1,
10、它的功能是计算两个参数之和,并将结果使用输出参数返回,具体语句如下:CREATEPROCEDUREadd_proc1@num1INT=0,@num2INT=0,@num3INTOUTPUTASSET@num3=@num1+@num2【例9.4】在查询分析器中执行如下代码,可以将存储过程add_proc1的输出参数值保存到@num变量中。DECLARE@numASINTEXECadd_proc112,23,@numOUTPUTPRINT@num运行结果为:38【例9.5】创建存储过程AvgWage,它的功能是根据给定的部门名称
11、计算平均工资,并将结果使用输出参数返回,具体语句如下:CREATEPROCEDUREAvgWage@depnamevarchar(100),@wagefloatOUTPUTASDECLARE@depidintSET@depid=0--根据参数中指定的部门名称@depname,获取部门编号S
此文档下载收益归作者所有