Oracle делает "создавать или заменять" операторы. Сервер Sql не кажется - если вы выполняете сценарий из Enterprise Manager, вместо этого вместо этого предлагается "drop and create". Откат и создание нежелательны в любой ситуации, когда вы делали гранты в хранимой процедуре, потому что она выдает любые гранты, которые сделала ваша команда администрирования базы данных. Вам действительно нужно "создать или заменить", чтобы помочь разобраться в связях между разработчиками и администраторами.
То, что я делал недавно, следующее:
use [myDatabase]
go
create procedure myProcedure as
begin
print 'placeholder'
end
go
alter procedure myProcedure as
begin
-- real sproc code here
end
go
Это делает то, что я хочу. Если процедура не существует, создайте ее, затем измените ее в правильном коде. Если процедура существует, создается сбой, и файл изменяет код с новым кодом.
Это создает другую проблему для администраторов, потому что создание создает ошибочную ошибку, если хранимая процедура уже существует. Разумеется, вводя в заблуждение в том, что вы не должны видеть красный текст ошибки, когда был достигнут желаемый результат.
Есть ли у кого способ подавить красный текст? Все, что я пробовал, приводит к тому, что "CREATE/ALTER PROCEDURE должен быть первым утверждением в ошибке пакета" так или иначе.