【问题标题】:Dynamic SQL Query to Drop table删除表的动态 SQL 查询
【发布时间】:2016-11-29 20:25:47
【问题描述】:

寻找创建一些动态 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'。

【问题讨论】:

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


    【解决方案1】:

    试试

    EXECUTE sp_executesql @DynamicSQL2
    

    而不是

    EXEC @DynamicSQL2
    

    【讨论】:

    • 完美。赞赏!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2011-06-01
    • 2020-01-19
    • 1970-01-01
    相关资源
    最近更新 更多