实验5数据库编程技术Word文件下载.docx
- 文档编号:15394999
- 上传时间:2022-10-30
- 格式:DOCX
- 页数:19
- 大小:134.48KB
实验5数据库编程技术Word文件下载.docx
《实验5数据库编程技术Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验5数据库编程技术Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
客户邮编'
declare@nochar(9),@navarchar(40),@adchar(40),@tevarchar(20),@zichar(6),@textchar(100)
declarecustcursorfor
selectcustomerno,customername,address,telephone,zip
fromcustomer
select@text=replicate('
='
38)+'
客户信息'
+replicate('
38)
print@text
select@text=space(84)
select@text='
----------'
------------'
--------'
---------'
opencust
fetchcustinto@no,@na,@ad,@te,@zi
while(@@fetch_status=0)
begin
select@text=@no+space(5)+convert(char(20),@na)+space(5)+convert(char(10),@ad)+space(3)+convert(char(13),@te)+space(7)+@zi
print@text
fetchcustinto@no,@na,@ad,@te,@zi
end
closecust
deallocatecust
(2)利用游标修改OrderMaster表中Ordersum的值。
declare@ordernochar(12),@ordersumnumeric(9,2)
declareordermascursorfor
selecta.orderno,sum(b.quantity*b.price)
fromordermastera,orderdetailb
wherea.orderno=b.orderno
groupbya.orderno
openordermas
fetchordermasinto@orderno,@ordersum
begin
updateordermaster
setordersum=@ordersum
whereorderno=@orderno
fetchordermasinto@orderno,@ordersum
end
closeordermas
deallocateordermas
结果查看:
select*
fromordermaster
(3)创建存储过程,要求:
按Employee表定义的CHECK约束自动产生员工编号。
createprocedurechansheng(@emp_intint)
as
declare@empnochar(8)
declarechancursorfor
selectemployeeno
fromemployee
orderbyemployeenodesc
openchan
fetchchaninto@empno
while(@@fetch_status=0and@emp_int>
0)
set@empno='
E'
+convert(char(7),convert(int,(substring(@empno,2,7))+1))
print@empno
set@emp_int=@emp_int-1
END
closechan
deallocatechan
执行:
按用户需要产生的员工编号个数产生编号
execchansheng3(产生三个)
(4)创建存储过程,要求:
查找姓“李”的“职员”的员工编号、订单编号、销售金额。
createprocedureempname(@emp_namechar
(2))
declare@empnochar(8),@empnamevarchar(10),@salarynumeric(8,2),@textvarchar(60)
selectemployeeno,employeename,salary
whereconvert(char
(2),employeename)=@emp_name
set@text='
编号'
+space(10)+'
姓名'
薪水'
fetchchaninto@empno,@empname,@salary
set@text=@empno+space(5)+convert(char(8),@empname)+space(5)+convert(char(8),@salary)
fetchchaninto@empno,@empname,@salary
execempname'
李'
(5)创建存储过程,要求:
输出所有客户姓名、客户订购金额及其相应业务员的姓名。
createprocedurep_customer
declare@customernamevarchar(40),@ordersumnumeric(9,2),@salernamevarchar(10),@namevarchar(40),@textvarchar(60)
selecta.customername,sum(b.ordersum),c.employeename
fromcustomera,ordermasterb,employeec
wherea.customerno=b.customernoandc.employeeno=b.salerno
groupbya.customername,c.employeename
orderbya.customername,c.employeename
+space(15)+'
客户订购金额'
业务员姓名'
set@text=replicate('
60)
fetchchaninto@customername,@ordersum,@salername
set@name=@customername
if(@namelike@customername)
begin
set@text=convert(char(20),@customername)+space(5)+convert(char(9),@ordersum)+space(5)+convert(char(8),@salername)
print@text
end
else
set@text=replicate('
-'
set@name=@customername
fetchchaninto@customername,@ordersum,@salername
执行:
execp_customer
(6)创建存储过程,要求:
输入年度,计算每个业务员的年终奖金额。
年终奖金=年销售总额×
提成率。
提成率规则如下:
年销售总额30000元以下部分,提成率为1.0%,超过30000元部分,则提成率为1.2%。
createprocedurep_salary@yearint
declare@employeenochar(12),@employeenamevarchar(10),@sumnumeric(9,2),@salarynumeric(9,2),@textvarchar(60)
selecta.employeeno,a.employeename,sum(b.ordersum)
fromemployeealeftjoinordermasterbona.employeeno=b.salernoandyear(b.orderdate)=@year
groupbya.employeeno,a.employeename
orderbysum(b.ordersum)desc
员工编号'
员工姓名'
年终奖励'
fetchchaninto@employeeno,@employeename,@sum
if(@sum>
30000)
begin
set@salary=(@sum-30000)*0.012+30000*0.01
set@text=@employeeno+space(12)+convert(char(10),@employeename)+space(8)+convert(char(9),@salary)
print@text
end
0)
set@salary=@sum*0.01
if(@sumisnull)
set@salary=0
set@text=@employeeno+space(12)+convert(char(10),@employeename)+space(8)+conv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 数据库 编程 技术