Заменить хранимую процедуру, если выполнено условие

Я хочу изменить хранимую процедуру, если условие существует. Я хочу оставить хранимую процедуру как есть, если условие не выполнено, поэтому drop / create на самом деле не вариант.

Попытка поместить содержимое ALTER PROC внутри блока IF вызывает ошибки для меня. Есть предположения?

IF (condition) EXEC ('ALTER PROC ...') 

ALTER / CREATE PROC должен быть первым в пакете, так что это единственный способ. Если вы этого не сделаете

 IF NOT (condition) RAISERROR('abort connection with high severity', 20, 1) GO ALTER PROC ... GO 

Вы можете использовать настройку NOEXEC для этого, но будьте осторожны. Когда вы включите NOEXEC ON, вы должны повернуть его обратно в положение OFF в конце вашего сценария.

 IF (CONDITION) SET NOEXEC OFF --Enables execution of code (Default) ELSE SET NOEXEC ON --Disables execution of code GO ALTER PROCEDURE MYPROC AS --STATEMENTS GO --END OF ALTER BLOCK SET NOEXEC OFF --RESTORES NOEXEC SETTING TO ITS DEFAULT 
Interesting Posts

Запрос MS-SQL – обновить запись, полученную с помощью хранимой процедуры

Тип данных SQL «float» при выходе в виде XML приводит к нежелательному поплавковому результату

Поиск специальных символов в записях в базе данных

Конфигурация SQLStart ASP.Net

Что вызывает ошибку MS DTC, возникающую спорадически в .NET?

Создание стержня на основе правил

Создание пользовательской сборки в сборке SQL Server, не найденной в ошибке базы данных

Как я могу декодировать трафик SQL Server с помощью wirehark?

Сравните два DATETIME только по дате, а не времени в SQL Server 2008

Преобразование Epoch с миллисекундами в Date в T-SQL

Типы данных SQL Server, эквивалентные Oracle?

Детерминированный способ получения WeekEnding (Sun) для данного столбца даты (для использования в вычисленном столбце)

Вставка SQL / счетчик

Если я не запустил Management Studio с «Запуск от имени администратора», я получаю ошибку входа (ошибка 18456)

SQL Server «В» Заявление для заказа позиции для производительности

Давайте будем гением компьютера.