Questa settimana abbiamo discusso della mia azienda su come dovremmo scrivere i nostri script SQL.
Sfondo: il nostro database è Oracle 10g (l'aggiornamento a 11 presto). Il nostro team DBA utilizza SQLPlus per distribuire i nostri script in produzione.
Ora, abbiamo avuto una distribuzione recentemente non riuscita perché aveva usato sia un punto e virgola che una barra ( /
). Il punto e virgola era alla fine di ogni istruzione e la barra era tra le istruzioni.
alter table foo.bar drop constraint bar1;
/
alter table foo.can drop constraint can1;
/
In seguito sono stati aggiunti alcuni trigger nello script, alcune viste create e alcune stored procedure. Avere entrambe le istruzioni ;
e ha /
causato l'esecuzione di ciascuna istruzione due volte causando errori (specialmente sugli inserti, che dovevano essere univoci).
In SQL Developer ciò non accade, in TOAD ciò non accade. Se si eseguono determinati comandi, questi non funzioneranno senza il comando /
.
In PL / SQL se si dispone di un sottoprogramma (DECLARE, BEGIN, END) il punto e virgola utilizzato verrà considerato come parte del sottoprogramma, quindi è necessario utilizzare la barra.
Quindi la mia domanda è questa: se il tuo database è Oracle, qual è il modo corretto di scrivere il tuo script SQL? Dato che sai che il tuo DB è Oracle, dovresti sempre usare il /
?
sqlterminator
su !
se lo si desidera) e questa convenzione tende a essere seguita da altri strumenti. Il linguaggio PL / SQL utilizza tuttavia i punti e virgola come elemento di sintassi obbligatorio.