Sql server 2008 使用动态SQL删除表

Sql server 2008 使用动态SQL删除表,sql-server-2008,tsql,Sql Server 2008,Tsql,这会出现以下错误: 味精207,第16级,状态1,第1行 列名“Testingwithdynamicsql”无效 现在为什么,如果我打印我的sql,它对我来说似乎是有效的,我应该改变什么使它工作呢 Declare @tablename varchar(500), @sql varchar(max) set @tablename = 'Testingwithdynamicsql' set @sql = 'IF OBJECT_ID('+@tablename+', ''U'') IS NOT NULL

这会出现以下错误:

味精207,第16级,状态1,第1行
列名“Testingwithdynamicsql”无效

现在为什么,如果我打印我的sql,它对我来说似乎是有效的,我应该改变什么使它工作呢

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

需要引用@tablename

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

EXEC不能与您的其他代码在同一数据库上运行;尝试添加一个
使用[DatabaseName]
作为
@sql
变量中的第一条语句。@Cᴏʀʏ-添加Use语句时仍会产生相同的错误