2011-09-20 69 views
0

写一个脚本,需要做这样的事情:我如何把多批次成一个单一的逻辑块

IF [CONDITION] 

BEGIN 

--EXECUTE LOADS OF BATCHES (I.E. BLOCKS OF CODE WITH 'GO' AT THE END) 

END 

这似乎没有被允许。在BEGIN...END区块中不允许使用GO声明。

我也试过这样:

IF NOT [CONDITION] GOTO GetMeOutOfHere 

--EXECUTE LOADS OF BATCHES (I.E. BLOCKS OF CODE WITH 'GO' AT THE END) 

GetMeOutOfHere: 

但是,你猜对了,GOTO不跨批次工作。

有没有解决这个困惑的难题?

+0

这可能是'sqlcmd'模式可以提供的帮助。不确定。 –

回答

0

这个怎么样:

IF NOT [CONDITION] 

SET NOEXEC ON 

--EXECUTE LOADS OF BATCHES (I.E. BLOCKS OF CODE WITH 'GO' AT THE END) 

SET NOEXEC OFF 

它似乎与我现在在做剧本的工作。

+0

那么,如果这就是你想要做的。查看[这个问题和答案](http://stackoverflow.com/q/659188/73226)其他可能的方法。 –

+0

这是我想要做的。 'RAISERROR'方法将完全终止脚本,而使用'SET NOEXEC ON/OFF',我可以确定一个要继续的点。 – David

1

只要摆脱GO声明,只要您不进行结构修改,就不需要它们。

如果您要更改结构,则可能需要复制if条件。

+1

@马丁史密斯 - 好点,会更新。 – cjk

+0

跨越大型脚本复制IF条件是我想避免的。 – David