一尘不染

DROP PROCEDURE引发语法错误

sql

我有一个#temp表,其中有存储过程的名称。

DECLARE @object VARCHAR(200)
SET @object = (SELECT Top 1 Te.[this Object...] From #Temp Te)

IF OBJECT_ID(@object) IS NOT NULL
    DROP PROCEDURE @object

但是在最后一步,我得到了错误

‘@object’附近的语法不正确。

是因为@object类型VARCHAR还是什么?

这是针对SQL Server 2012


阅读 189

收藏
2021-03-08

共1个答案

一尘不染

你不能那样做。您需要使用动态sql。就像是 :

DECLARE @object NVARCHAR(200)
DECLARE @sql NVARCHAR(max)
SET @object = (SELECT Top 1 Te.[this Object...] From #Temp Te)
IF OBJECT_ID(@object) IS NOT NULL
BEGIN
    SET @sql = 'DROP PROCEDURE ' + @object
    sp_executesql @sql
END
2021-03-08