2016-01-26 89 views
-1

這帶來的一個錯誤:刪除表使用動態SQL

消息207,級別16,狀態1,行
無效的列名稱Testingwithdynamicsql「。

現在爲什麼是這樣,如果我打印我的sql它似乎對我有效,我做了什麼改變,使其工作?

Declare @tablename varchar(500), @sql varchar(max) 
set @tablename = 'Testingwithdynamicsql' 
set @sql = 'IF OBJECT_ID('[email protected]+', ''U'') IS NOT NULL 
      DROP TABLE ' + @tablename + ' ' 
Print @sql 
exec(@sql) 
+0

EXEC可能不相同的數據庫代碼的其餘部分進行操作;嘗試添加一個'USE [DatabaseName]'作爲你的'@ sql'變量的第一個語句。 –

+0

@Cᴏʀʏ - 添加Use語句仍然會產生相同的錯誤 – RashidInman

回答

1

的@tablename需要被引用

Declare @tablename varchar(500), @sql varchar(max) 
set @tablename = 'Testingwithdynamicsql' 
set @sql = 'IF OBJECT_ID('''[email protected]+''', ''U'') IS NOT NULL 
      DROP TABLE ' + @tablename + ' ' 
Print @sql