【发布时间】:2011-05-18 14:38:01
【问题描述】:
我创建了一个存储过程,如果它存在于数据库中,它将删除一个表。使用 EXEC 运行存储过程时,出现以下错误:
消息 203,级别 16,状态 2,程序 sp_DropIfExists,第 13 行名称 'IF EXISTS(SELECT 1 FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'table_name') AND 类型 = (N'U')) 删除表 [table_name]' 无效 标识符。
但是,如果我将生成的 T-SQL 复制并粘贴到管理工作室中,它似乎运行良好。有人可以解释为什么这是无效的吗?修复会很好,但我真的主要关注为什么,但如何会很好!提前致谢。
ALTER PROCEDURE [dbo].[sp_DropIfExists](@tableName VARCHAR(255))
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQL VARCHAR(MAX);
SET @SQL = 'IF EXISTS(SELECT 1 FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N''' + @tableName + ''') AND type = (N''U'')) DROP TABLE [' + @tableName + ']'
PRINT @SQL;
EXEC @SQL;
END
【问题讨论】:
标签: sql tsql stored-procedures