实验九 游标与存储过程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验九游标与存储过程

1 实验目的与要求

(1) 掌握游标的定义和使用方法。

(2) 掌握存储过程的定义、执行和调用方法。

(3) 掌握游标和存储过程的综合应用方法。

2 实验内容

请完成以下实验内容:

(1)创建游标,逐行显示Customer表的记录,并用WHILE结构来测试

@@Fetch_Status的返回值。输出格式如下:

declare @C_no char(9),@C_name char(18),@C_phone char(10),

@C_addchar(8),@C_zip char(6)

declare @text char(100)

declarecus_cur scroll cursor for

select*

from Customer

select @text='=========================Customer 表的记录

========================='

print @text

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

print @text

select

@text='============================================================ ============================'

print @text

opencus_cur

fetchcus_cur into @C_no,@C_name,@C_phone,@C_add,@C_zip

while(@@fetch_status=0)

begin

select @text=@cust_No+' '+@cust_name+' '+@addr+' '+@tel_no+'

'+@zip

print @text

fetchcus_cur into @C_no,@C_name,@C_phone,@C_add,@C_zip

end

closecus_cur

deallocatecus_cur

'客户编号'+'-----'+'客户名称'+'----'+'客户住址'+'-----'+'客户电话'+'------'+'邮政编码'

(2)利用游标修改OrderMaster表中orderSum的值。

declare @No char(12),@total numeric(9,2)

declare cur_OrderMaster scroll cursorfor

select orderNo,sum(price*quantity)

from OrderDetail

groupby orderNo

open cur_OrderMaster

fetch cur_OrderMaster into @No,@total

while(@@fetch_status=0)

begin

update OrderMaster set orderSum=@total

where orderNo=@No

fetch cur_OrderMaster into @No,@total

end

close cur_OrderMaster

deallocate cur_OrderMaster

(3)创建游标,要求:输出所有女业务员的编号、姓名、性别、所属部门、职务、薪水。declare @emp_No char(8),@emp_Name char(10),@emp_sex char(1),@dept char(30),@headShip char(10),@salary int

declare mycur cursor for

select employeeNo,employeeName,sex,department,headShip,salary

From Employee

where sex='f'

Order by employeeNo

open mycur

fetch mycur into

@emp_No,@emp_Name,@emp_sex,@dept,@headShip,@salary

while(@@fetch_status=0)

begin

select @emp_No,@emp_Name,@emp_sex,@dept,@headShip,@salary

fetch mycur into

@emp_No,@emp_Name,@emp_sex,@dept,@headShip,@salary

end

close mycur

deallocate mycur

(4)创建存储过程,要求:按表定义中的CHECK约束自动产生员工编号。

(5)创建存储过程,要求:查找姓“李”的职员的员工编号、订单编号、订单金额。

createprocedure emp_Name @E_Name varchar(10)

AS

select a.employeeNo,b.orderNo,b.ordersum

from Employee a,OrderMaster b

where a.employeeNo=b.salerNo and a.employeeName like @E_Name

exec emp_Name @E_Name='李%'

(6)创建存储过程,要求:统计每个业务员的总销售业绩,显示业绩最好的前3位业务

员的销售信息。

(7)创建存储过程,要求将大客户(销售数量位于前5名的客户)中热销的前3种商品的销

售信息按如下格式输出:

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

商品编号商品名称总销售数量

P2******* 120GB硬盘 21.00

P2******* 3.5寸软驱 18.00

P2******* 网卡 16.00

(8)创建存储过程,要求:输入年度,计算每个业务员的年终奖金。年终奖金=年销售

总额×提成率。提成率规则如下:年销售总额5000元以下部分,提成率为10%,对于5000

元及超过5000元部分,则提成率为15%。

(9)创建存储过程,要求将OrderMaster表中每一个订单所对应的明细数据信息按规定格

式输出,格式如图7-1所示。

===================订单及其明细数据信息====================

--------------------------------------------------- 订单编号 200801090001

--------------------------------------------------- 商品编号数量价格

P2******* 5 403.50

P2******* 3 2100.00

P2******* 2 600.00

--------------------------------------------------- 合计订单总金额 3103.50

图7-1 订单及其明细数据信息

(10)请使用游标和循环语句创建存储过程proSearchCustomer,根据客户编号查找该客户的名

称、住址、总订单金额以及所有与该客户有关的商品销售信息,并按商品分组输出。输出格

式如图7-2所示。

===================客户订单表====================

---------------------------------------------------

相关文档
最新文档