我有一个包含许多批次的巨大SQL脚本(使用GO
)。
在某些情况下,我想停止整个脚本的执行。
我尝试使用NOEXEC
,但我继续收到无效的对象错误,因为我的脚本包括创建数据并向新表和列添加数据。
我不想使用RAISERROR
,还有其他方法吗?
答案 0 :(得分:4)
这个问题没有很好的解决方案。可以在批处理之间共享数据的一种方法是表(持久性或临时性)。因此,您可以拥有一些逻辑,这些逻辑取决于该表的某些状态或该表中特定列的值,如下所示:
--CREATE TABLE debug(col int)
--INSERT INTO debug VALUES(1)
--DELETE FROM debug
SELECT 1
GO
SELECT 2
SELECT 3
GO
IF EXISTS(SELECT * FROM debug)
SELECT 6
GO
只需将IF EXISTS(SELECT * FROM debug)
这一行添加到您要跳过的脚本中的每个位置,并根据表中是否有某些行而不执行这些代码块。