T-SQL脚本goto找不到标签

时间:2018-09-20 23:34:28

标签: sql-server tsql

这是我的T-SQL脚本(摘录-实际的脚本很大)

IF NOT EXISTS (SELECT * FROM tblDBVersion 
               WHERE tblDBVersion.Version = '1.10.0') 
BEGIN
    PRINT 'Database isnt at 1.10.0.  Upgrading.' 
    GOTO DBUpgrade1100
END

GOTO eof

DBUpgrade1100:
    -- TSQL Upgrade Script goes here --

eof:
    PRINT 'done'

运行此命令会产生此错误:

  

以sa ...连接到10.96.68.30 ...

     

第13层状态1的第77行的消息133
  GOTO语句引用标签'eof',但尚未声明标签。
  执行批处理时遇到错误。
  退出。
  断开与10.96.68.30的连接,以sa ...

-- T-SQL Upgrade Script --区域中是否存在某些东西可以使eof:标签不被发现,或者我只是弄乱了其他东西?

谢谢

1 个答案:

答案 0 :(得分:0)

原来,您不能在使用GO的脚本中使用GOTO。所以这就是我所做的。

如果存在(选择*来自dbo.tblDBVersion,版本='1.10.1'),则抛出50000,“正在停止脚本!”,1

如果SELECT语句返回任何行并且不继续执行,脚本将停止。我没有条件脚本,但对我来说这已经足够接近了,它可以与带有GO语句的脚本一起使用。