实验五 数据库编程——存储过程

一、实验目的

1.掌握数据库编程各种控制语句的使用

2.掌握存储过程的创建

二、实验内容

1、编程计算S=2+4+6+……+100

DECLARE @sum int, @i int;
SELECT @sum=0,@i=2;
WHILE(@i<=100)
BEGIN
SET @sum+=@i;
SET @i+=2;
END
PRINT @sum

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-br4OGUxG-1654697933769)(D:\typora\Picture\image-20220520154702270.png)]

2、编程计算S=1+(1+3)+(1+3+5)+……+(1+3+5……+51)

DECLARE @sum int,@i int,@s int;
SELECT @sum=0,@i=1,@s=0;
WHILE(@i<=51)
BEGIN
SET @s=@s+@i;
SET @sum+=@s;
SET @i=@i+2;
END
PRINT @sum;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x4bKnd0n-1654697933770)(D:\typora\Picture\image-20220520183715171.png)]

3、查询是否有“打印机”的订单,如果有,输出“目前有打印机的订单”,如果没有,输出“目前没有打印机的订单”。

IF EXISTS
(SELECT SellOrderID
 FROM Sell_Order,Product
 WHERE Sell_Order.ProductID=Product.ProductID AND ProductName='打印机'
)
PRINT '目前有打印机的订单'
ELSE
PRINT '目前没有打印机的订单'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Nfgvg9w-1654697933771)(D:\typora\Picture\image-20220520222129543.png)]

4、在销售管理数据库中创建存储过程proc_select,实现查询所有员工的功能。

CREATE PROC proc_select
AS
SELECT *
FROM Employee

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HiUEJ2za-1654697933771)(D:\typora\Picture\image-20220520222656131.png)]

执行后效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qQuM4lN6-1654697933772)(D:\typora\Picture\image-20220520222725140.png)]

5、在销售管理数据库中创建存储过程proc_employee_order,要求实现如下功能:根据员工的姓名查询该员工的奖金情况,奖金根据该员工接收订单的总金额计算得到(奖金=总金额*5%),调用存储过程,查询员工王孔若和蔡慧敏的奖金。

CREATE PROC proc_employee_order
@EName varchar(50)
AS
SELECT e.EmployeeName,SUM(s.SellOrderNumber*p.Price)*0.05 奖金
FROM Employee e,Sell_Order s,Product p
WHERE e.EmployeeID=s.EmployeeID AND s.ProductID=p.ProductID AND e.EmployeeName=@EName
GROUP BY e.EmployeeName

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gcqirgre-1654697933772)(D:\typora\Picture\image-20220520224307257.png)]

查询王孔若和蔡慧敏

EXEC proc_employee_order @Ename='王孔若'
EXEC proc_employee_order @Ename='蔡慧敏'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sT5XzKtr-1654697933773)(D:\typora\Picture\image-20220520224240976.png)]

6、在销售管理数据库中创建存储过程proc_customer_order, 要求实现如下功能:根据客户的公司名称查询该客户的订单情况,如果该公司没有订购商品,则输出“某某公司没有订购商品”,否则输出订购商品的相关信息,包括公司名称,联系人姓名,订购商品名称,订购数量,单价。调用存储过程,查询“通恒机械有限公司”订购商品情况。

CREATE PROC proc_customer_order
@CName varchar(50)
As
IF
( SELECT COUNT(s.SellOrderID)
  FROM Customer c,Sell_Order s
  WHERE c.CustomerID=s.ProductID AND c.CompanyName=@CName
)=0
PRINT @CName+'没有订购商品';
ELSE
SELECT c.CompanyName 公司名称,c.ContactName 联系人姓名,p.ProductName 订购产品名称,s.SellOrderNumber 订购数量,p.Price 订购单价
FROM Customer c,Product p,Sell_Order s
WHERE c.CustomerID=s.CustomerID AND s.ProductID=p.ProductID AND c.CompanyName=@CName

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-17NuJ6Vn-1654697933773)(D:\typora\Picture\image-20220520230532805.png)]

查询“通恒机械有限公司”订购商品情况

EXEC proc_customer_order @CName='通恒机械有限公司'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-21sJciNs-1654697933774)(D:\typora\Picture\image-20220520230737079.png)]

未订购公司的查询情况

EXEC proc_customer_order @CName='人民低电压'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4o1LOcUk-1654697933774)(D:\typora\Picture\image-20220520230943953.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

czijin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值