SQL:为什么在while循环中出现关于我的结尾的错误?

时间:2018-06-21 13:02:29

标签: sql while-loop

我有几年需要整理的桌子。我尝试根据代码belove使用WHILE循环解决此问题:

declare @t int = 10

while @t <= 11

  --Erase tables if they exist.
    if object_id(['a\b].rot@t', 'U') is null
    drop table [a\b].rot@t
    if object_id(['a\c].rot@t', 'U') is null
    drop table [a\c].rot@t

  --Create tables.
    select *
    into rot@t
    from rot_ftg_@t

    insert into rot@t
    select *
    from rot_ens_@t

  --Update macrovar.
    set @t = @t + 1

end

运行此脚本时,出现以下错误消息: “消息102,第15层,州1,第31行 'end'附近的语法不正确。”

我使用的是msn sql server,它的版本似乎是14.0。

短循环时间间隔仅供测试,对不起,由于公司规定我无法提供任何示例数据。

我将不胜感激,在此先感谢您!

问候 MarJer

1 个答案:

答案 0 :(得分:1)

您丢失了begin语句(假设您的其余代码很好,那应该可以解决针对begin / end的错误。

while @t <= 11
   BEGIN

  --Erase tables if they exist.
    if object_id(['a\b].rot@t', 'U') is null
    drop table [a\b].rot@t
    if object_id(['a\c].rot@t', 'U') is null
    drop table [a\c].rot@t

  --Create tables.
    select *
    into rot@t
    from rot_ftg_@t

    insert into rot@t
    select *
    from rot_ens_@t

  --Update macrovar.
    set @t = @t + 1

END