我在一个表中有一个名为SkypeID的列,我放弃了它。我使用的查询如下,
IF NOT EXISTS(SELECT * FROM sys.columns
WHERE Name = N'SkypeID' AND Object_ID = Object_ID(N'Mstr_OnlineDetails'))
BEGIN
Alter Table Mstr_OnlineDetails
Drop column SkypeID
END
查询已成功执行。 如果我编写以下查询并检查,则“IF”条件失败。
IF EXISTS(SELECT * FROM sys.columns
WHERE Name = N'SkypeID' AND Object_ID = Object_ID(N'Mstr_OnlineDetails'))
BEGIN
Update Mstr_OnlineDetails Set OnlineQuery = SkypeID
END
查询结果显示无效列SkypeID。 我通过执行以下查询交叉检查
SELECT * FROM sys.columns
WHERE Name = N'SkypeID' AND Object_ID = Object_ID(N'Mstr_OnlineDetails')
它返回一个空结果。那么If Condition如何失败? 任何帮助将不胜感激
答案 0 :(得分:2)
您在脚本的编译阶段遇到此错误。正在解析THEN
。 。 。并且您的错误是解析错误。
一种方法是切换到动态SQL:
IF EXISTS(SELECT * FROM sys.columns WHERE Name = N'SkypeID' AND Object_ID = Object_ID(N'Mstr_OnlineDetails'))
BEGIN
exec sp_executesql N'Update Mstr_OnlineDetails Set OnlineQuery = SkypeID'
END;