要删除表的动态SQL查询

时间:2016-11-29 11:20:24

标签: sql-server-2008-r2 dynamic-sql

寻找创建一些动态SQL以删除表的方法(如果存在)。但是我似乎无法使语法正确。这是迄今为止的查询(为安全性重命名的字段)

DECLARE @TableNameNew NVARCHAR(MAX)
DECLARE @DynamicSQL2 NVARCHAR(MAX)

SET @TableNameNew = (SELECT  'tbl1_' + REPLACE(StaffCode,'.','') AS TableName
         FROM tblEmployee WHERE (PCLogin = REPLACE(SYSTEM_USER, 'DOMAIN\', '')))
SET @DynamicSQL2 = 'IF OBJECT_ID(' + '''' + @TableNameNew + '''' + +','+'''U''' + ') IS NOT NULL DROP TABLE ' + @TableNameNew

EXEC @DynamicSQL2

这会返回错误:

  

找不到存储过程' IF OBJECT_ID(' tbl1_ghewitt' U')IS NOT NULL DROP TABLE tbl1_ghewitt'。

1 个答案:

答案 0 :(得分:2)

尝试

EXECUTE sp_executesql @DynamicSQL2

而不是

EXEC @DynamicSQL2