ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:100.97KB ,
资源ID:9037796      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9037796.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验游标和存储过程.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验游标和存储过程.docx

1、实验游标和存储过程实验九 游标与存储过程1 实验目的与要求(1) 掌握游标的定义和使用方法。(2) 掌握存储过程的定义、执行和调用方法。(3) 掌握游标和存储过程的综合应用方法。2 实验内容请完成以下实验内容:(1) 创建游标,逐行显示Customer表的记录,并用WHILE结构来测试Fetch_Status的返回值。输出格式如下:客户编号+-+客户名称+-+客户住址+-+客户电话+-+邮政编码(2) 利用游标修改OrderMaster表中orderSum的值。(3) 创建游标,要求:输出所有女业务员的编号、姓名、性别、所属部门、职务、薪水。(4) 创建存储过程,要求:按表定义中的CHECK约

2、束自动产生员工编号。(5) 创建存储过程,要求:查找姓“李”的职员的员工编号、订单编号、订单金额。(6) 创建存储过程,要求:统计每个业务员的总销售业绩,显示业绩最好的前3位业务员的销售信息。(7) 创建存储过程,要求将大客户(销售数量位于前5名的客户)中热销的前3种商品的销售信息按如下格式输出:=大客户中热销的前3种商品的销售信息=商品编号 商品名称 总销售数量P20050003 120GB硬盘 21.00P20050004 3.5寸软驱 18.00P20060002 网卡 16.00(8) 创建存储过程,要求:输入年度,计算每个业务员的年终奖金。年终奖金年销售总额提成率。提成率规则如下:年

3、销售总额5000元以下部分,提成率为10,对于5000元及超过5000元部分,则提成率为15。(9) 创建存储过程,要求将OrderMaster表中每一个订单所对应的明细数据信息按规定格式输出,格式如图7-1所示。=订单及其明细数据信息= - 订单编号 200801090001 - 商品编号 数量 价格 P20050001 5 403.50 P20050002 3 2100.00 P20050003 2 600.00 - 合计订单总金额 3103.50 图7-1 订单及其明细数据信息(10) 请使用游标和循环语句创建存储过程proSearchCustomer,根据客户编号查找该客户的名称、住址

4、、总订单金额以及所有与该客户有关的商品销售信息,并按商品分组输出。输出格式如图7-2所示。=客户订单表= - 客户名称: 统一股份有限公司 客户地址: 天津市 总金额: 31121.86 - 商品编号 总数量 平均价格 P20050001 5 80.70 P20050002 19 521.05 P20050003 5 282.00 P20070004 2 320.00 报表制作人 陈辉 制作日期 06 8 2012 图7-2 客户订单表实验脚本:/*(1) 创建游标,逐行显示Customer表的记录,并用WHILE结构来测试Fetch_Status的返回值。输出格式如下:客户编号+-+客户名称

5、+-+客户电话+-+客户住址+-+邮政编码*/declare C_no char(9),C_name char(18),C_phone char(10), C_add char(8),C_zip char(6)declare text char(100)declare cus_cur scroll cursor forselect *from Customer62select text=Customer62表的记录=print textselect text=客户编号+-+客户名称+-+客户电话+-+客户住址+-+邮政编码print textselect text=print textopen

6、 cus_curfetch cus_cur into C_no,C_name,C_phone,C_add,C_zipwhile (fetch_status=0)begin select text=C_no+ +C_name+ +C_phone+ +C_add+ +C_zip print text fetch cus_cur into C_no,C_name,C_phone,C_add,C_zip endclose cus_curdeallocate cus_cur/*(2) 利用游标修改OrderMaster表中orderSum的值*/declare orderNo varchar(20),t

7、otal numeric(9,2)declare om_cur cursor for select orderNo,sum(quantity*price) from OrderDetail62 group by orderNoopen om_curfetch om_cur into orderNo,total while (fetch_status=0)begin update OrderMaster62 set orderSum=total where orderNo=orderNo fetch om_cur into orderNo,total endclose om_curdealloc

8、ate om_cur/*(3) 创建游标,要求:输出所有女业务员的编号、姓名、性别、所属部门、职务、薪水*/declare emNo varchar(8),emNa char(8),emse char(1),emde varchar(10), emhe varchar(8),emsa numeric(8,2)declare text char(100)declare em_cur scroll cursor for select employeeNo,employeeName,sex,department,headShip,salary from Employee62 where sex=M

9、select text= print text select text=编号 姓名 性别 所属部门 职务 薪水 print text select text= print textopen em_curfetch em_cur into emNo,emNa,emse,emde,emhe,emsawhile (fetch_status=0)begin select text=emNo+ +emNa+ +emse+ +emde+ +emhe + +convert(char(10),emsa) print text fetch em_cur into emNo,emNa,emse,emde,emhe

10、,emsaendclose em_curdeallocate em_cur/*(4) 创建存储过程,要求:按表定义中的CHECK约束自动产生员工编号*/create table Rnum( number char(8) null, ename char(10) null) -先创建一张新表用来存储已经产生的员工编号create procedure no_tot(name nvarchar(50) asbegin declare i int,text char(100) set i=1 while(i1000) begin if exists(select number from Rnum wh

11、ere number=(E+convert(char(4),year(getdate()+right(00+convert(varchar(3),i),3) begin set i=i+1 continue end else begin insert Rnum values(E+convert(char(4),year(getdate()+right(00+convert(varchar(3),i),3),name) select text=员工编号+ +员工姓名 print text select text=(E+convert(char(4),year(getdate()+right(00

12、+convert(varchar(3),i),3)+ +name -这里的两个数字3 就是我们要设置的id长度 print text break end endend/*执行过程*/exec no_tot 张三/*(5) 创建存储过程,要求:查找姓“李”的职员的员工编号、订单编号、订单金额*/create procedure emli_tot emNo char(8)as select a.employeeNo 员工编号,b.orderNo 订单编号,b.orderSum 订单金额 from Employee62 a,OrderMaster62 b where a.employeeNo=b.s

13、alerNo and a.employeeName like emNo/*执行过程*/exec emli_tot 李%/*(6) 创建存储过程,要求:统计每个业务员的总销售业绩,显示业绩最好的前3位业务员的销售信息*/create procedure saler_totas select top 3 salerNo 业务员编号,sum(orderSum) 总销售业绩 from OrderMaster62 group by salerNo order by sum(orderSum) desc/*执行过程*/exec saler_tot/*(7) 创建存储过程,要求将大客户(销售数量位于前5名的

14、客户)中热销的前3种商品的销售信息按如下格式输出:=大客户中热销的前种商品的销售信息=商品编号 商品名称 总销售数量P20050003 120GB硬盘 21.00P20050004 3.5寸软驱 18.00P20060002 网卡 16.00*/create procedure product_totas declare proNo char(10),proNa char(20),total int declare text char(100) declare sale_cur scroll cursor for select top 3 a.productNo,a.productName,s

15、um(c.quantity) from Product62 a,OrderMaster62 b,OrderDetail62 c where a.productNo=c.productNo and b.orderNo=c.orderNo and b.customerNo in(select top 5 m.customerNo from OrderMaster62 m,OrderDetail62 n where m.orderNo=n.orderNo group by m.customerNo order by sum(quantity) desc) group by a.productNo,a

16、.productName order by sum(c.quantity) desc select text=大客户中热销的前种商品的销售信息= print text select text=商品编号 商品名称 总销售数量 print text open sale_cur fetch sale_cur into proNo,proNa,total while(fetch_status=0) begin select text=proNo+ +proNa+ +convert(char(10),total) print text fetch sale_cur into proNo,proNa,to

17、tal end close sale_cur deallocate sale_cur/*执行过程*/exec product_tot/*(8) 创建存储过程,要求:输入年度,计算每个业务员的年终奖金。年终奖金年销售总额提成率。提成率规则如下:年销售总额元以下部分,提成率为,对于元及超过元部分,则提成率为*/create procedure pride_tot date intas declare saleNo char(15),total numeric(9,2) declare text char(100),money numeric(8,2) declare pride_cur scrol

18、l cursor for select salerNo,sum(orderSum) from OrderMaster62 where year(orderDate)=date group by salerNo select text=业务员的年终奖金= print text select text=业务员编号 年终奖金 print text open pride_cur fetch pride_cur into saleNo,total while(fetch_status=0) begin if(total5000) select money=total*0.1 else select mo

19、ney=500+(total-5000)*0.15 select text=saleNo+ +convert(char(10),money) print text fetch pride_cur into saleNo,total end close pride_cur deallocate pride_cur/*执行过程*/exec pride_tot 2012/*(9) 创建存储过程,要求将OrderMaster62表中每一个订单所对应的明细数据信息按规定格式输出,格式如图-1所示。 =订单及其明细数据信息= - 订单编号 200801090001 - 商品编号 数量 价格 P200500

20、01 5 403.50 P20050002 3 2100.00 P20050003 2 600.00 - 合计订单总金额 3103.50 图-1 订单及其明细数据信息*/create procedure orderm_tot orderno char(15)as declare prono char(15),quantity int,price numeric(9,2) declare text char(100) declare orderm_cur scroll cursor for select productNo,sum(quantity),sum(quantity*price) fr

21、om OrderDetail62 where orderNo=orderno group by productNo select text=订单及其明细数据信息= print text select text=- print text select text=订单编号 +orderno print text select text=- print text select text=商品编号 数量 价格 print text open orderm_cur fetch orderm_cur into prono,quantity,price while(fetch_status=0) begin

22、 select text=prono+ +convert(char(5),quantity)+ +convert(char(10),price) print text fetch orderm_cur into prono,quantity,price end select text=- print text close orderm_cur deallocate orderm_cur declare sum numeric(9,2) declare orm_cur scroll cursor for select orderSum from OrderMaster62 where order

23、No=orderno open orm_cur fetch orm_cur into sum while(fetch_status=0) begin select text=合计订单总金额+ +convert(char(12),sum) print text fetch orm_cur into sum end close orm_cur deallocate orm_cur/*执行过程*/exec orderm_tot 200801090001/*(10) 请使用游标和循环语句创建存储过程proSearchCustomer,根据客户编号查找该客户的名称、住址、总订单金额以及所有与该客户有关的

24、商品销售信息,并按商品分组输出。输出格式如图-2所示。=客户订单表= - 客户名称: 统一股份有限公司 客户地址: 天津市 总金额: 31121.86 - 商品编号 总数量 平均价格 P20050001 5 80.70 P20050002 19 521.05 P20050003 5 282.00 P20070004 2 320.00 报表制作人陈辉 制作日期06 8 2012 */create procedure proSearchCustomer (cusno char(10)as declare cusname char(40),address char(20),total numeric(9,2) declare text char(100) declare sear_cur scroll cursor for select a.customerName,a.address,sum(b.orderSum) from Customer62 a,OrderMaster62 b where a.customerNo=b.customerNo and a.customerNo=cusno group by a.customerName,a.address select text=客户订单表= print text select tex

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1