2016-05-13 18 views
-1

我在表中有一個名爲SkypeID的列,我放棄了它。我使用的查詢如下,Sql Server 2008'如果'條件來檢查表中是否存在不工作的列

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條件如何失敗? 任何幫助,將不勝感激

+0

u能PLZ檢查你的第一個查詢(IF NOT EXISTS再滴......)? –

回答

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; 
相關問題