资源描述:
《SQLServer2005数据库任务化教程 任务5 数据库存储过程的规划与设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SQLServer2005数据库任务化教程梁竞敏黄华林宋广科等编著中国水利水电出版社任务五数据库存储过程的规划与设计一、任务目标1掌握创建和使用存储过程来完成对数据库的操作;2掌握在存储过程里面使用游标来实现循环的目的;3掌握事务的操作以及事务在存储过程中的应用;二、教学任务1介绍存储过程和事务的概念;2存储过程的创建和执行语法;3创建不带参数的存储过程;4创建带参数的存储过程;5创建带有多个输入参数并有默认值的存储过程6分析设计分销系统中需要的存储过程5.1SQLServer存储过程概述5.1.1存储过程的概念数据库管理系统中的存储过
2、程与其它程序设计语言中的过程类似,存储过程可以:接受输入参数并以输出参数的形式将多个值返回至调用程序。包含执行数据库操作(包括调用其它存储过程)的编程语句。向调用程序返回状态值,以表明成功或失败(以及失败原因)。5.1.2创建和执行存储过程CREATEPROC存储过程名[{@参数名数据类型}[=default][OUTPUT]]ASSQL语句[…]5.1.2创建和执行存储过程[=default]为参数的默认值。如果定义了默认值,则不指定该参数的值也可以执行该存储过程。默认值必须是常量或NULL。[OUTPUT]:带有OUTPUT的参数是输
3、出参数,不带OUTPUT的参数是输入参数。执行存储过程的语句是EXECUTE,其语法格式为:[EXEC[UTE]]存储过程名[实参[,OUTPUT][,…n]]5.1.2创建和执行存储过程任务5-1:创建不带参数的存储过程Proc_kcxx1,查询仓库编码为“0001”的期初库存信息。在SQLQuery窗口中执行如下命令:USE分销系统GOCREATEPROCEDUREProc_kcxx1Asselect仓库编码,仓位编码,商品编码,商品名称,单位,期初数量,期初金额from期初库存where仓库编码=’0001’5.1.2创建和执行存储
4、过程任务5-2:执行存储过程Proc_kcxx1。在SQLQuery窗口中执行如下命令:EXECProc_kcxx15.1.2创建和执行存储过程任务5-3:创建带参数的存储过程。对上面的存储过程进行改造,改成带一个参数,仓库编码,可以指定需要查询的仓库编码的期初库存信息。在SQLQuery窗口中执行如下命令:CREATEPROCEDUREProc_kcxx2@ckbmvarchar(20)AsSelect仓库编码,仓位编码,商品编码,商品名称,单位,期初数量,期初金额from期初库存where仓库编码=@ckbm5.1.2创建和执行存储过
5、程任务5-4:执行此存储过程,查询仓库编码为“0001”的期初库存信息。在SQLQuery窗口中执行如下命令:EXECProc_kcxx2‘0001’5.1.2创建和执行存储过程任务5-5:创建带有多个输入参数并有默认值的存储过程。对上面的存储过程进行改造,改成带两个参数,仓库编码和商品名称,可以指定需要查询的仓库编码和商品名称的期初库存信息,其中仓库编码默认值为“0001”。在SQLQuery窗口中执行如下命令:CREATEPROCEDUREProc_kcxx3@ckbmvarchar(20)=‘0001’,@spmcvarchar(5
6、0)AsSelect仓库编码,仓位编码,商品编码,商品名称,单位,期初数量,期初金额from期初库存where仓库编码=@ckbmand商品名称=@spmc5.1.2创建和执行存储过程任务5-6:执行此存储过程,查询仓库编码为“0002”,商品名称为“杯子”的期初库存信息。在SQLQuery窗口中执行如下命令:EXECProc_kcxx3‘0002’,’杯子’5.1.2创建和执行存储过程任务5-7:创建存储过程,把期初库存中指定的记录更新为:期初金额=期初数量×期初单价。在SQLQuery窗口中执行如下命令:CREATEPROCEDURE
7、Proc_kcxx_update@ckbmvarchar(20)=‘0001’,@spmcvarchar(50)AsUpdate期初库存set期初金额=期初数量×期初单价where仓库编码=@ckbmand商品名称=@spmc5.1.2创建和执行存储过程任务5-8:执行此存储过程,将所有商品名称为“杯子”且仓库编码为“0003”的期初库存信息中期初金额重新计算。在SQLQuery窗口中执行如下命令:EXECProc_kcxx_update‘0003’,’杯子’5.1.2创建和执行存储过程任务5-9:在存储过程中,可以对多个表进行操作,并且
8、可以使用游标。下面的例子将指定供应商供应的商品的出库信息里面的单价统一更新为某个指定价格。为了说明游标的使用,在这个例子中特意用了游标,当然,不用游标也可以实现这个功能。注意的是,在存储过程里