На этой неделе в моей компании велись споры о том, как нам писать наши сценарии SQL.
История вопроса: наша база данных - Oracle 10g (скоро обновится до 11). Наша команда администраторов баз данных использует SQLPlus для развертывания наших сценариев в производстве.
Недавно у нас было развертывание, которое не удалось, поскольку оно использовало точку с запятой и косую черту ( /
). Точка с запятой была в конце каждого утверждения, а косая черта была между утверждениями.
alter table foo.bar drop constraint bar1;
/
alter table foo.can drop constraint can1;
/
Позднее в сценарий были добавлены триггеры, созданы некоторые представления, а также некоторые хранимые процедуры. Наличие обоих операторов ;
и /
заставило каждый оператор выполняться дважды, вызывая ошибки (особенно на вставках, которые должны были быть уникальными).
В SQL Developer этого не происходит, в TOAD этого не происходит. Если вы запустите определенные команды, они не будут работать без /
них.
В PL / SQL, если у вас есть подпрограмма (DECLARE, BEGIN, END), используемая точка с запятой будет считаться частью подпрограммы, поэтому вы должны использовать косую черту.
Поэтому мой вопрос заключается в следующем: если ваша база данных - Oracle, как правильно написать сценарий SQL? Поскольку вы знаете, что ваша БД - Oracle, следует ли вам всегда использовать /
?
sqlterminator
его, !
если хотите), и этому соглашению обычно следуют другие инструменты. Однако язык PL / SQL использует точки с запятой в качестве обязательного элемента синтаксиса.