【发布时间】:2015-09-22 17:42:15
【问题描述】:
我正在尝试的是在打印语句时满足条件(如果不存在块)退出循环; else 继续 while 循环。我收到语法错误:
关键字“ELSE”附近的语法不正确。
这里是sn-p的代码:
WHILE @currentrow < @rows
BEGIN
SET @currentrow = @currentrow + 1
SELECT @selectcol = sysid
FROM @TableVar
WHERE id = @currentrow
SELECT @sysid = @selectcol
IF NOT EXISTS (
SELECT field_id
FROM fields
WHERE sys_id = @sysid
AND NAME = @field_name
)
PRINT cast(@field_name AS VARCHAR) + ' not found in the business area ' + cast(@sysid AS VARCHAR)
BREAK
ELSE
CONTINUE
[While loop continues]
【问题讨论】:
-
“似乎是语法错误”?具体来说,错误信息是什么?请使用此信息更新您的问题。
-
已更新。问题在于 else 的位置
-
我不确定我是否理解这个逻辑 - 要么这个
IF块出现在循环体的末尾(在这种情况下CONTINUE毫无意义 - 这就是循环要做的事情无论如何)或循环的其余部分无法访问(因为您总是BREAK或CONTINUE)。 -
@Damien_The_Unbeliever 结果是 break 和 continue 并没有像我想象的那样工作。你是对的,如果我使用它,我的 while 循环的其余部分将无法访问。
标签: sql-server