2016-05-13 13 views
-1

テーブルにSkypeIDという列があり、削除しました。私が使用したクエリは次のとおりです。Sql Server 2008 'If'列にテーブルが存在しないかどうかを確認するための条件

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は(NOTが存在する場合はTHEN ... DROP)あなたの最初のクエリを確認することができますか? –

答えて

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; 
関連する問題