Temos discutido esta semana na minha empresa sobre como devemos escrever nossos scripts SQL.
Antecedentes: Nosso banco de dados é Oracle 10g (atualizando para 11 em breve). Nossa equipe de DBA usa o SQLPlus para implantar nossos scripts em produção.
Agora, tivemos uma implantação recentemente que falhou porque usava ponto e vírgula e barra ( /
). O ponto-e-vírgula estava no final de cada declaração e a barra estava entre as declarações.
alter table foo.bar drop constraint bar1;
/
alter table foo.can drop constraint can1;
/
Alguns gatilhos foram adicionados posteriormente no script, algumas visualizações criadas e alguns procedimentos armazenados. Ter tanto o ;
eo /
causada cada declaração para executar duas vezes causando erros (especialmente nas inserções, que precisavam ser único).
No SQL Developer isso não acontece, no TOAD isso não acontece. Se você executar certos comandos, eles não funcionarão sem os /
mesmos.
No PL / SQL, se você tiver um subprograma (DECLARE, BEGIN, END), o ponto-e-vírgula usado será considerado como parte do subprograma, portanto, você deve usar a barra.
Portanto, minha pergunta é a seguinte: se seu banco de dados é Oracle, qual é a maneira correta de escrever seu script SQL? Como você sabe que seu banco de dados é Oracle, você deve sempre usar o /
?
sqlterminator
para !
se quiser) e esta convenção tende a ser seguido por outras ferramentas. A linguagem PL / SQL, no entanto, usa ponto-e-vírgula como um elemento de sintaxe obrigatório.