2016-10-27 53 views
-1

让我们假设我执行,其中只有想删除三列的任何表下面的SQL代码:继续执行代码,SQL即使发现错误

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

现在,如果用名字C2的COLUMN没有按”存在的代码将停在那里,并返回给我的错误。

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

谢谢。下面SQL

回答

-1

使用,以获得期望的结果:

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 
+2

上述语法不会为访问工作。 –

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" 
相关问题