2011-09-20 63 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