欢迎来到天天文库
浏览记录
ID:40238977
大小:1.42 MB
页数:100页
时间:2019-07-28
《SQL Server 2000管理与应用开发教程 王晶 第9章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SQLServer2000管理及应用开发教程授课教师:职务:第9章存储过程、触发器和游标课程描述本章将介绍SQLServer2000中3个常用的对象,即存储过程、触发器和游标。使用SQLServer2000开发数据库应用系统时,会经常用到这些对象。本章知识点存储过程触发器游标概述9.1存储过程使用Transact-SQL程序时,可用如下两种方法存储和执行程序:可以在本地存储程序,并创建向SQLServer发送命令并处理结果的应用程序。也可以将程序在SQLServer中存储为存储过程,创建执行存储过程及处理结果的应用程序。9.1.1存
2、储过程概述存储过程是Transact-SQL语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。使用SQLServer中的存储过程而不使用存储在客户计算机本地的Transact-SQL程序包括如下的优势:1.允许模块化程序设计2.可以更快地执行3.减少网络流量4.可作为安全机制使用9.1.2创建存储过程1.使用CREATEPROCEDURE语句2.使用企业管理器中的菜单命令1.使用CREATEPROCEDURE语句CREATEPROCEDURE语句的作用是创建存储过程。它的语法结构如下:CREATEPROC[EDURE
3、]存储过程名[{@parameterdata_type}[VARYING][=default][OUTPUT]]ASSQL语句[...n]【例9.1】创建存储过程IncreaseWage,它的功能是将表EmpInfo中所有员工的工资数据增加10%,具体语句如下:USEHrSystemGOCREATEPROCEDUREIncreaseWageASUPDATEEmpInfoSETWage=Wage*1.1GO2.使用企业管理器中的菜单命令在企业管理器中,展开要创建存储过程的数据库,例如本书使用的数据库HrSystem。右击“存储过程”节
4、点,然后单击“新建存储过程”命令,打开新建存储过程对话框。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,并查看执行结果,具体语句如下:USEHrSyst
8、emGOEXECIncreaseWageSELECT*FROMEmpInfoGO9.1.4存储过程的参数在定义存储过程时,可以同时指定参数,格式如下:@参数名数据类型[=默认值][OUTPUT][,...n]【例9.3】创建存储过程add_proc,它的功能计算两个参数之和并将其输出,具体语句如下:CREATEPROCEDUREadd_proc@num1INT=0,@num2INT=0ASDECLARE@num3INTSET@num3=@num1+@num2PRINT@num3【例9.3】存储过程add_proc定义了两个参数@nu
9、m1和@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,它的功能是根据给定的部门名称计算平均工资,并将结果使用输出参数返回,具体语句如下:C
11、REATEPROCEDUREAvgWage@depnamevarchar(100),@wagefloatOUTPUTASDECLARE@depidintSET@depid=0--根据参数中指定的部门名称@depname,获取部门编号S
此文档下载收益归作者所有