我有一个#temp表,其中有存储过程的名称。
#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还是什么?
@object
VARCHAR
这是针对SQL Server 2012
你不能那样做。您需要使用动态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