实验八_T-SQL流程控制和函数答案.doc
文本预览下载声明
实验八 T-SQL流程控制和函数
实验目的
熟练掌握变量的定义、赋值与使用。
熟练掌握常用基本运算符。
熟练掌握流程控制语句,尤其是条件语句和循环语句。
熟悉并掌握常用的系统函数。
理解什么是标量函数、内嵌表值函数及多语句表值函数。
熟练掌握自定义函数的定义和调用方法。
实验内容及要求
对CPXS数据库,完成如下任务:
创建一名为 CustomerName的局部变量,并在SELECT语句中使用该变量查找“鹿城中学”购买产品的情况(包括产品名称、单价)。
用T-SQL语言编程输出3~300之间能被7整除的数。
查询CP表中各种产品的产品编号、产品名称和价格,对其价格按以下规则进行转换:若价格小于1000,替换为“廉价产品”;若价格在1000-2000之间,替换为“一般产品”;若价格大于2000小于5000,替换为“昂贵产品”;若价格大于5000,替换为“奢侈品”;列标题更改为“评价”。
使用系统函数,计算今天距“2015-1-1”还剩多少天。
题目要求: 雇员“王孔若”签订了一个供应给“鹿城中学”50个优盘的订单,编程实现将订单涉及的相关信息写入数据库中。
实例分析:一条订单会涉及产品、客户及雇员的有关信息,且这些信息分别存放在不同的表中,所以,要将订单涉及的相关信息写入数据库中,需要完成以下几方面的操作。
先要获取该订单的相关信息。然后在将这条订单信息添加到订单表(p_order)中的同时,还必须修改其他表中的信息,包括在客户表(customer)中添加对应于该订单记录对应的客户信息,在产品表(product)中修改产品的库存量,其值必须为当前库存量的值减去刚增加的订单记录中包含的数量值。同理,如果某雇员取消了一个订单,在各表中也必须修改或删除相应的记录信息。
实验过程及结果
(说明:要写出相关SQL语句,实验结果可以是运行画面的抓屏,抓屏图片要尽可能的小。)
1. DECLARE @CustomerName char(30)
SELECT @CustomerName=鹿城中学
SELECT customer.公司名称,product.产品名,product.单价
FROM p_order,customer,product
WHERE p_order.客户ID=customer.客户ID and
customer.公司名称=@CustomerName and
product.产品ID=product.产品ID
实验结果:
2. DECLARE @i int
SET @i=3
WHILE @i=300
BEGIN
IF @i%7=0
PRINT @i
SET @i=@i+1
END
实验结果:
3. SELECT product.产品ID,product.产品名,product.单价,
CASE
WHEN 单价=5000 then 奢侈产品
WHEN 单价=2000 then 昂贵产品
WHEN 单价=1000 then 一般产品
WHEN 单价=0 then 廉价产品
END AS 评价
FROM product
实验结果:
4. SELECT DATEDIFF(day,GETDATE(),2015-1-1)
5. 关于王若孔那道题
USE companyInfo
DECLARE @userId int --保存雇员ID
DECLARE @cusId int --保存客户ID
DECLARE @max_ordId int --保存订单ID的最大值
DECLARE @storePro int --保存产品的库存量
DECLARE @id_product int --保存供应产品的产品编号
SELECT @cusId=客户ID FROM customer where 公司名称=鹿城中学
SELECT @storePro=库存量,@id_product=产品ID FROM product WHERE 产品名=优盘
SELECT @max_ordId=max(订单ID) FROM P_order
SELECT @max_ordId=@max_ordId+1 --获取要插入的订单信息的订单ID
SELECT @userId=雇员ID FROM employee WHERE 姓名=王孔若
IF @storePro50
PRINT 库存量不够
ELSE
BEGIN
INSERT P_order VALUES(@max_ordId,@id_product,
50,@userId,@cusId,getdate())
UPDATE product SET 库存量=库存量-50 WHERE 产品ID=@id_
显示全部