Nous avons eu un débat cette semaine dans mon entreprise sur la façon dont nous devrions écrire nos scripts SQL.
Contexte: Notre base de données est Oracle 10g (mise à niveau vers 11 bientôt). Notre équipe DBA utilise SQLPlus pour déployer nos scripts en production.
Maintenant, nous avons eu un déploiement récemment qui a échoué car il avait utilisé à la fois un point-virgule et une barre oblique ( /
). Le point-virgule se trouvait à la fin de chaque instruction et la barre oblique entre les instructions.
alter table foo.bar drop constraint bar1;
/
alter table foo.can drop constraint can1;
/
Certains déclencheurs ont été ajoutés plus tard dans le script, certaines vues ont été créées ainsi que certaines procédures stockées. Le fait d'avoir à la fois le ;
et le /
fait que chaque instruction s'exécute deux fois, ce qui provoque des erreurs (en particulier sur les insertions, qui doivent être uniques).
Dans SQL Developer, cela ne se produit pas, dans TOAD, cela ne se produit pas. Si vous exécutez certaines commandes, elles ne fonctionneront pas sans /
elles.
En PL / SQL, si vous avez un sous-programme (DECLARE, BEGIN, END), le point-virgule utilisé sera considéré comme faisant partie du sous-programme, vous devez donc utiliser la barre oblique.
Ma question est donc la suivante: si votre base de données est Oracle, quelle est la bonne façon d'écrire votre script SQL? Puisque vous savez que votre base de données est Oracle, devez-vous toujours utiliser le /
?
sqlterminator
à !
si vous le souhaitez) et cette convention a tendance à suivre par d' autres outils. Le langage PL / SQL utilise cependant des points-virgules comme élément de syntaxe obligatoire.