一、实验目的
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
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;
3、查询是否有“打印机”的订单,如果有,输出“目前有打印机的订单”,如果没有,输出“目前没有打印机的订单”。
IF EXISTS
(SELECT SellOrderID
FROM Sell_Order,Product
WHERE Sell_Order.ProductID=Product.ProductID AND ProductName='打印机'
)
PRINT '目前有打印机的订单'
ELSE
PRINT '目前没有打印机的订单'
4、在销售管理数据库中创建存储过程proc_select
,实现查询所有员工的功能。
CREATE PROC proc_select
AS
SELECT *
FROM Employee
执行后效果
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
查询王孔若和蔡慧敏
EXEC proc_employee_order @Ename='王孔若'
EXEC proc_employee_order @Ename='蔡慧敏'
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
查询“通恒机械有限公司”订购商品情况
EXEC proc_customer_order @CName='通恒机械有限公司'
未订购公司的查询情况
EXEC proc_customer_order @CName='人民低电压'