这是我的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:
标签不被发现,或者我只是弄乱了其他东西?
谢谢
答案 0 :(得分:0)
原来,您不能在使用GO的脚本中使用GOTO。所以这就是我所做的。
如果存在(选择*来自dbo.tblDBVersion,版本='1.10.1'),则抛出50000,“正在停止脚本!”,1
如果SELECT语句返回任何行并且不继续执行,脚本将停止。我没有条件脚本,但对我来说这已经足够接近了,它可以与带有GO语句的脚本一起使用。