На этой неделе в моей компании у нас были дебаты о том, как нам писать сценарии 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 точки с запятой используются в качестве обязательного элемента синтаксиса. - person William Robertson   schedule 02.06.2016