假设我在任何只想删除三列的表中执行以下SQL代码:
ALTER TABLE DROP COLUMN C1
ALTER TABLE DROP COLUMN C2
ALTER TABLE DROP COLUMN C3
现在,如果名称为C2的COLUMN不存在,代码将停在那里并返回错误。
我想知道是否有任何东西要保持代码运行,所以它会删除COLUMN C3,并在以后返回错误/信息。
谢谢。
答案 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