停止执行sql脚本

Ran*_*ser 5 sql sql-server-2008

我有一个庞大的SQL脚本,有很多批次(使用GO).

在某些情况下,我想停止整个执行此脚本.

我尝试使用NOEXEC,但我继续获取无效的对象错误,因为我的脚本包括创建数据并将数据添加到新的表和列.

我不想使用RAISERROR,有没有其他方法可以做到这一点?

Gio*_*uri 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
Run Code Online (Sandbox Code Playgroud)

只需IF EXISTS(SELECT * FROM debug)将此行添加到脚本中要跳过的每个位置,并根据表是否有某些行的事实,这些代码块是否会执行。

  • @RandomUser,你别无选择。 (3认同)