Я создал хранимую процедуру, которая удалит таблицу, если она существует в базе данных.При запуске хранимой процедуры с EXEC я получаю следующую ошибку:
Сообщение 203, Уровень 16, Состояние 2, Процедура sp_DropIfExists, Строка 13 Имя 'IF EXISTS (SELECT 1 FROM sys.objects)WHERE OBJECT_ID = OBJECT_ID (N'table_name ') AND type = (N'U')) DROP TABLE [table_name] 'не является допустимым идентификатором.
Однако, если я копирую и вставляю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