Я впервые использую SqlServer, и в каждом из наших сценариев создания процедуры есть блок кода, подобный приведенному ниже, для удаления процедуры, если она уже существует:
IF EXISTS (SELECT *
FROM information_schema.routines
WHERE routine_name = 'SomeProcedureName'
AND routine_type = 'PROCEDURE'
BEGIN
DROP PROCEDURE SomeProcedureName
END
//then the procedure definition
Чтобы прекратить вырезать и вставлять этот шаблонный код в каждый файл, я хотел бы поместить этот код в собственную хранимую процедуру, чтобы вместо этого сценарии выглядели так:
DropIfRequired('SomeProcedureName')
//then the procedure definition
Моя попытка найти решение:
CREATE PROCEDURE DropIfRequired
(
@procedureName varchar
)
AS
IF EXISTS (SELECT * FROM information_schema.routines
WHERE routine_name = @procedureName
AND routine_type = 'PROCEDURE')
BEGIN
DROP PROCEDURE @procedureName
END
Но тогда я получаю следующую ошибку:
Сообщение 102, уровень 15, состояние 1, процедура удаления, строка 10
Неверный синтаксис рядом с'@procedureName'.
Есть идеи, как делать то, что я хочу?