即使发现错误,也要继续在SQL中执行代码

时间:2016-10-27 07:37:05

标签: sql ms-access

假设我在任何只想删除三列的表中执行以下SQL代码:

ALTER TABLE DROP COLUMN C1
ALTER TABLE DROP COLUMN C2
ALTER TABLE DROP COLUMN C3

现在,如果名称为C2的COLUMN不存在,代码将停在那里并返回错误。

我想知道是否有任何东西要保持代码运行,所以它会删除COLUMN C3,并在以后返回错误/信息。

谢谢。

2 个答案:

答案 0 :(得分:2)

不清楚您何时/何地将执行此代码。

但是,在Access中,以下代码可以正常工作:

On Error Resume Next
CurrentDb.Execute "ALTER TABLE Table1 DROP COLUMN C1"
CurrentDb.Execute "ALTER TABLE Table1 DROP COLUMN C2"
CurrentDb.Execute "ALTER TABLE Table1 DROP COLUMN C3"

答案 1 :(得分:-1)

使用下面的sql来获得所需的结果:

SET STR = ''
IF EXISTS(
    SELECT *
    FROM sys.columns 
    WHERE Name      = N'c1'
      AND Object_ID = Object_ID(N'table1'))
BEGIN
    ALTER TABLE table1 DROP COLUMN C1
END
ELSE
    SET STR = concat(STR,'C1 does not exist.')
END

IF EXISTS(
    SELECT *
    FROM sys.columns 
    WHERE Name      = N'c2'
      AND Object_ID = Object_ID(N'table1'))
BEGIN
    ALTER TABLE table1 DROP COLUMN C2
END
ELSE
    SET STR = concat(STR,'C2 does not exist.')
END

IF EXISTS(
    SELECT *
    FROM sys.columns 
    WHERE Name      = N'c3'
      AND Object_ID = Object_ID(N'table1'))
BEGIN
    ALTER TABLE table1 DROP COLUMN C3
END
ELSE
    SET STR = concat(STR,'C3 does not exist.')
END

SELECT STR