2016-10-27 76 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" 
相關問題