一、分支结构1:IF...ELSE
1、语法:
IF (条件)
BEGIN
语句或语句块1
END
[ELSE
BEGIN
语句或语句块2
END]
2、特点:
1)ELSE并不一定是必须的;
2)如果条件为真,执行语句或语句块1,条件为假则执行语句或语句块2,无论哪种情况,最后都要执行IF..ELSE语句下的一条语句;
3)IF...ELSE可以嵌套;
4)如果只有一条语句BEGIN..END可以省略。
3、例:
1)判断两个数的大小,并输出判断结果
DECLARE @X INT=66,@Y INT =88
IF @Y>@X
BEGIN
PRINT '结果为:X大于Y'
PRINT '程序结束'
END
ELSE
PRINT 'X小于Y'
GO
--注:上例只有一句语句可省略BEGIN..END,超过一句必须加上,否则程序报错。
2)查询销售额最高的员工姓名和金额,如果销售金额大于1000,则奖励200,将结果以消息的方式输出
USE MyServer
GO
DECLARE @MaxPrice INT, @Name VARCHAR(10)
--将查询出的销售额最大值赋给变量@MaxPrice
SELECT @MaxPrice=MAX(S.S_Amount*P.PL_OutPrice)
FROM SalesList S
JOIN Employee E ON S.E_Id=E.E_Id
JOIN ProductList P ON P.PL_Id=S.PL_Id
--将查询出的销售额最大值所对应的业务员赋给变量@Name
SELECT @Name=X.姓名 FROM
(SELECT E.E_Name 姓名,MAX(S.S_Amount*P.PL_OutPrice) 销售额
FROM SalesList S
JOIN Employee E ON S.E_Id=E.E_Id
JOIN ProductList P ON P.PL_Id=S.PL_Id
GROUP BY E.E_Name) X
WHERE X.销售额 =@MaxPrice --查询出最大销售额的员工姓名
--判断销售金额是否大于1000,并输出判断结果
IF @MaxPrice>1000
BEGIN
PRINT '销售额最大的员工姓名:'+@Name+',销售金额:'
+CAST(@MaxPrice AS VARCHAR(20))
PRINT '销售金额已超1000元,奖励金额:'+CONVERT(VARCHAR(10),@MaxPrice)+'元'
END
ELSE
BEGIN
PRINT '销售额最大的员工姓名:'+@Name+',销售金额:'
+CAST(@MaxPrice AS VARCHAR(20))
PRINT '销售金额未超1000元,无奖励!'
END
GO