【发布时间】:2021-12-17 12:48:06
【问题描述】:
我正在为这个 else 函数而苦苦挣扎。
我一直在第 41 行收到此错误消息:
消息 156,第 15 级,状态 1,第 41 行
关键字“ELSE”附近的语法不正确
我知道其他人已经问过类似的问题。除了在这种情况下(如果我错了,请纠正我),有人告诉我,一些 IF 语句仍然可以在最后没有 ELSE 语句的情况下运行。最后一个 ELSE 语句应该是第一个条件不为真的结果。
这是我的代码:
USE PR;
DECLARE @TotHours decimal;
DECLARE @TotEmps int;
DECLARE @HolHours decimal;
DECLARE @RegHours decimal;
DECLARE @OTHours time;
SELECT @TotHours = SUM(WorkHours)
FROM Hours
WHERE PPID IN (SELECT MAX(PPID) FROM PayPeriod);
SELECT @TotEmps = COUNT(EmpID) FROM EmpData;
SELECT @HolHours = SUM(HolHours)
FROM Hours
WHERE PPID IN (SELECT MAX(PPID) FROM PayPeriod);
SET @RegHours = @TotEmps * 32;
IF @OTHours = @HolHours
BEGIN
SELECT *
FROM Hours
WHERE @OTHours > 0;
END;
IF @RegHours > @TotHours
BEGIN
SELECT *
FROM Hours
WHERE @OTHours = @HolHours AND @RegHours = @TotEmps * 32;
PRINT 'Total regular hours for the week: ' + CONVERT(varchar, @RegHours, 1);
PRINT 'Total holiday hours for the week: ' + CONVERT(varchar, @HolHours, 1);
PRINT 'Total OT Hours for the week: ' + CONVERT(varchar, @OTHours, 1);
END;
ELSE
BEGIN
SELECT @TOtHours - MAX(@RegHours) AS OTHours
FROM Hours;
PRINT 'Total regular hours for the week: ' + CONVERT(varchar, @RegHours, 1);
PRINT 'Total holiday hours for the week: ' + CONVERT(varchar, @HolHours, 1);
PRINT 'Total OT Hours for the week: ' + CONVERT(varchar, @OTHours, 1);
END;
ELSE
PRINT 'This week had no holiday pay.';
【问题讨论】:
-
你必须在
END之后有no;,然后ELSE才会跟随...... -
你的嵌套没有意义。您实际上拥有
IF ... ELSE ... ELSE,这是无效的。 -
类似“END no;”之类的?
-
我在 IF 语句的末尾添加了一个额外的 ELSE,但我仍然遇到同样的问题。
-
一个
IF只能有一个ELSE。要创建一个多分支,您基本上将另一个IF放在ELSE分支中,例如END; ELSE IF Condition BEGIN...
标签: sql sql-server sql-server-2012