77范文网 - 专业文章范例文档资料分享平台

数据库系统原理与设计实验教程答案 实验十二_游标和存储过程

来源:网络收集 时间:2018-12-06 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

实验十二 游标与存储过程

请完成以下实验内容:

(1) 创建游标,逐行显示Customer表的记录,并用WHILE结构来测试@@Fetch_Status的返回值。输出格式如下:

'客户编号'+'-----'+'客户名称'+'----'+'客户住址'+'-----'+'客户电话'+'------'+'邮政编码' (2) 利用游标修改OrderMaster表中orderSum的值。

(3) 创建游标,要求:输出所有女业务员的编号、姓名、性别、所属部门、职务、薪水。 (4) 创建存储过程,要求:按表定义中的CHECK约束自动产生员工编号。

(5) 创建存储过程,要求:查找姓“李”的职员的员工编号、订单编号、订单金额。 (6) 创建存储过程,要求:统计每个业务员的总销售业绩,显示业绩最好的前3位业务员的销售信息。

(7) 创建存储过程,要求将大客户(销售数量位于前5名的客户)中热销的前3种商品的销售信息按如下格式输出:

=======大客户中热销的前3种商品的销售信息================

商品编号 商品名称 总销售数量 P20050003 120GB硬盘 21.00 P20050004 3.5寸软驱 18.00 P20060002 网卡 16.00

(8) 创建存储过程,要求:输入年度,计算每个业务员的年终奖金。年终奖金=年销售总额×提成率。提成率规则如下:年销售总额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,根据客户编号查找该客户的名称、住址、总订单金额以及所有与该客户有关的商品销售信息,并按商品分组输出。输出格式如图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的返回值。

输出格式如下:

'客户编号'+'-----'+'客户名称'+'----'+'客户电话'+'-----'+'客户住址'+'------'+'邮政编码'*/ 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 for select *

from Customer62 select @text='================================Customer62表的记录====================' print @text

select @text='客户编号'+'------'+'客户名称'+'-----------'+'客户电话'+'-------'+'客户住址'+'------'+'邮政编码' print @text select

@text='======================================================================' print @text open cus_cur

fetch cus_cur into @C_no,@C_name,@C_phone,@C_add,@C_zip while (@@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 end

close cus_cur deallocate cus_cur

/*(2) 利用游标修改OrderMaster表中orderSum的值*/ declare @orderNo varchar(20),@total numeric(9,2) declare om_cur cursor for select orderNo,sum(quantity*price) from OrderDetail62 group by orderNo open om_cur

fetch om_cur into @orderNo,@total while (@@fetch_status=0) begin update OrderMaster62 set orderSum=@total where orderNo=@orderNo fetch om_cur into @orderNo,@total end

close om_cur deallocate 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' select @text='=====================================================' print @text select @text='编号 姓名 性别 所属部门 职务 薪水' print @text select @text='=====================================================' print @text open em_cur

fetch em_cur into @emNo,@emNa,@emse,@emde,@emhe,@emsa while (@@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,@emsa end

close em_cur deallocate em_cur

/*(4) 创建存储过程,要求:按表定义中的CHECK约束自动产生员工编号*/ create table Rnum( number char(8) null, ename char(10) null

) --先创建一张新表用来存储已经产生的员工编号

create procedure no_tot(@name nvarchar(50)) as begin

declare @i int,@text char(100) set @i=1 while(@i<1000) begin if exists(select number from Rnum where

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'+convert(varchar(3),@i),3))+' '+@name --这里的两个数字'3' 就是我们要设置的id长度 print @text break end

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据库系统原理与设计实验教程答案 实验十二_游标和存储过程在线全文阅读。

数据库系统原理与设计实验教程答案 实验十二_游标和存储过程.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/345838.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: