求语法错误

mssql2008r2_xb 2018-05-02 04:26:58
语句
declare @a int,@s int
set @a=0
set @s=0
while @a<20
begin
select @a=@a+1
if (@a%2)=0
set @s=@s+@a;
print '@a='+convert(varchar(4),@a)+',是偶数,不累计这个数';
else
print '@a='+convert(varchar(4),@a)+',是奇数,不累计这个数';
continue
end
print '20以内偶数值的总和等于'+convert(varchar(4),@s)

结果
消息 156,级别 15,状态 1,第 10 行
关键字 'else' 附近有语法错误。


我试了,如果把else前面的print去掉,语句是可以运行的。但是为什么?
...全文
763 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
victor_yang 2018-05-17
  • 打赏
  • 举报
回复
if 后面如果有1条以上的语句时要用begin ...end 括起来,新手常犯的错误
mywisdom88 2018-05-11
  • 打赏
  • 举报
回复
MS SQL 的IF语法 -- 1 .执行单条语句 if 条件成立 执行单条成立语句1 else 执行不成立语句2 -- 2.执行多条语句 if 条件成立 begin 执行多条成立语句1 执行多条成立语句2 执行多条成立语句N end else begin 执行多条失败语句1 执行多条失败语句2 执行多条失败语句N end
qq152521766 2018-05-11
  • 打赏
  • 举报
回复
DECLARE @a INT, @s INT; SET @a = 0; SET @s = 0; WHILE @a < 20 BEGIN SELECT @a = @a + 1; IF (@a % 2) = 0 BEGIN SET @s = @s + @a; PRINT '@a=' + CONVERT(VARCHAR(4), @a) + ',是偶数,不累计这个数'; END; ELSE BEGIN PRINT '@a=' + CONVERT(VARCHAR(4), @a) + ',是奇数,不累计这个数'; END; CONTINUE; END; PRINT '20以内偶数值的总和等于' + CONVERT(VARCHAR(4), @s); begin end 你试试这个。
二月十六 版主 2018-05-02
  • 打赏
  • 举报
回复
引用 5 楼 mssql2008r2_xb 的回复:
[quote=引用 3 楼 sinat_28984567 的回复:] 加上begin end
DECLARE @a INT,
        @s INT;
SET @a = 0;
SET @s = 0;
WHILE @a < 20
BEGIN
    SELECT @a = @a + 1;
    IF (@a % 2) = 0
    BEGIN
        SET @s = @s + @a;
        PRINT '@a=' + CONVERT(VARCHAR(4), @a) + ',是偶数,不累计这个数';
    END;
    ELSE
    BEGIN
        PRINT '@a=' + CONVERT(VARCHAR(4), @a) + ',是奇数,不累计这个数';
    END;
    CONTINUE;

END;
PRINT '20以内偶数值的总和等于' + CONVERT(VARCHAR(4), @s);
谢谢版主~~[/quote] 记得结贴哦
mssql2008r2_xb 2018-05-02
  • 打赏
  • 举报
回复
引用 3 楼 sinat_28984567 的回复:
加上begin end
DECLARE @a INT,
        @s INT;
SET @a = 0;
SET @s = 0;
WHILE @a < 20
BEGIN
    SELECT @a = @a + 1;
    IF (@a % 2) = 0
    BEGIN
        SET @s = @s + @a;
        PRINT '@a=' + CONVERT(VARCHAR(4), @a) + ',是偶数,不累计这个数';
    END;
    ELSE
    BEGIN
        PRINT '@a=' + CONVERT(VARCHAR(4), @a) + ',是奇数,不累计这个数';
    END;
    CONTINUE;

END;
PRINT '20以内偶数值的总和等于' + CONVERT(VARCHAR(4), @s);
谢谢版主~~
mssql2008r2_xb 2018-05-02
  • 打赏
  • 举报
回复
declare @a int,@s int set @a=0 set @s=0 while @a<20 begin select @a=@a+1 if (@a%2)=0 begin set @s=@s+@a; print '@a='+convert(varchar(4),@a)+',是偶数,累计这个数'; end else begin print '@a='+convert(varchar(4),@a)+',是奇数,不累计这个数'; end continue end print '20以内偶数值的总和等于'+convert(varchar(4),@s) 哈哈哈,我明白了,在if和else里面,加上 begin end就可以了。
mssql2008r2_xb 2018-05-02
  • 打赏
  • 举报
回复
没弄明白,1楼的错误提示到底错误在哪
mssql2008r2_xb 2018-05-02
  • 打赏
  • 举报
回复
上面有个字写反了,偶数是累计的,即


declare @a int,@s int
set @a=0
set @s=0
while @a<20
begin
select @a=@a+1
if (@a%2)=0
set @s=@s+@a;
print '@a='+convert(varchar(4),@a)+',是偶数,累计这个数';
else
print '@a='+convert(varchar(4),@a)+',是奇数,不累计这个数';
continue
end
print '20以内偶数值的总和等于'+convert(varchar(4),@s)


但是这样错误,如果去掉else前面的 print语句,就可以运行,即
declare @a int,@s int
set @a=0
set @s=0
while @a<20
begin
select @a=@a+1
if (@a%2)=0
set @s=@s+@a;
else
print '@a='+convert(varchar(4),@a)+',是奇数,不累计这个数';
continue
end
print '20以内偶数值的总和等于'+convert(varchar(4),@s)
二月十六 版主 2018-05-02
  • 打赏
  • 举报
回复
加上begin end
DECLARE @a INT,
        @s INT;
SET @a = 0;
SET @s = 0;
WHILE @a < 20
BEGIN
    SELECT @a = @a + 1;
    IF (@a % 2) = 0
    BEGIN
        SET @s = @s + @a;
        PRINT '@a=' + CONVERT(VARCHAR(4), @a) + ',是偶数,不累计这个数';
    END;
    ELSE
    BEGIN
        PRINT '@a=' + CONVERT(VARCHAR(4), @a) + ',是奇数,不累计这个数';
    END;
    CONTINUE;

END;
PRINT '20以内偶数值的总和等于' + CONVERT(VARCHAR(4), @s);

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧