Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
即使发现错误,也要继续在SQL中执行代码_Sql_Ms Access - Fatal编程技术网

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

即使发现错误,也要继续在SQL中执行代码,sql,ms-access,Sql,Ms Access,假设我在任何只想删除三列的表中执行以下SQL代码: ALTER TABLE DROP COLUMN C1 ALTER TABLE DROP COLUMN C2 ALTER TABLE DROP COLUMN C3 现在,如果名为C2的列不存在,代码将停止并返回错误 我想知道是否有任何方法可以继续运行代码,因此它会删除C3列,稍后返回错误/信息 谢谢。使用下面的sql获得所需的结果: SET STR = '' IF EXISTS( SELECT * FROM sys.column

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

ALTER TABLE DROP COLUMN C1
ALTER TABLE DROP COLUMN C2
ALTER TABLE DROP COLUMN C3
现在,如果名为C2的列不存在,代码将停止并返回错误

我想知道是否有任何方法可以继续运行代码,因此它会删除C3列,稍后返回错误/信息


谢谢。

使用下面的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

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

但是,在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"