我正在編寫一個看似簡單的SQL代碼片段,它在確保列存在後刪除列。
問題:如果該列不存在,代碼內部 IF子句抱怨它找不到列!那麼,doh,這就是爲什麼它在IF子句內!
所以我的問題是,爲什麼不應該執行一段代碼給出錯誤?爲什麼即使它不應該被執行,T-SQL塊也會報錯?
這裏的片段:
IF exists (select * from syscolumns
WHERE id=object_id('Table_MD') and name='timeout')
BEGIN
ALTER TABLE [dbo].[Table_MD]
DROP COLUMN timeout
END
GO
...這是錯誤:
Error executing SQL script [...]. Invalid column name 'timeout'
我使用Microsoft SQL Server 2005 Express版本。
正確。如果臨時表位於sproc使用的周圍,您也會得到此錯誤。 – ConcernedOfTunbridgeWells 2008-09-23 13:35:16