Quelle est la différence entre terminer une instruction Oracle sql par un point-virgule ou par une barre oblique sur la ligne suivante?


8

Les deux requêtes suivantes semblent être équivalentes lorsqu'elles sont exécutées dans sql * plus:

1.

select * from user_tables;

2.

select * from user_tables
/

Y a-t-il une différence entre les deux versions?

Réponses:


11

Il n'y a aucune différence pour une seule instruction SQL. Le caractère «/» sur sa propre ligne indique à SQL * Plus d'exécuter la commande dans le tampon. Vous pouvez utiliser le point-virgule à la fin de la plupart des instructions SQL comme raccourci pour le «/». Si vous souhaitez exécuter un bloc PL / SQL ou exécuter une poignée d'instructions SQL comme CREATE TYPE, cependant, vous devez utiliser le '/'

SQL> begin
  2    null;
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> create type foo as object (
  2    col1 number,
  3    col2 number );
  4  /

Type created.

Différents outils peuvent avoir des conventions légèrement différentes pour la façon dont vous exécutez plusieurs instructions SQL et PL / SQL dans un script, alors sachez que cela est spécifique à SQL * Plus.


Est-il alors analogue à celui de SQL Server GO? (Fondamentalement, un séparateur de lots.)
Nick Chammas

@NickChammas - Plus ou moins, oui.
Justin Cave

5

Et en plus de ce que Justin a mentionné - car il /exécute tout ce qui est dans le tampon, il peut également être utilisé après avoir édité la commande précédente, ou même simplement pour exécuter la même commande plusieurs fois.

Si vous appelez edsqlplus, il essaiera d'écrire un fichier temporaire AFIEDT.BUFdans votre répertoire courant, puis fera apparaître un éditeur (vi, bloc-notes, etc.), pour que vous puissiez modifier la dernière commande envoyée. Une fois que vous avez quitté l'éditeur, vous utilisez /pour envoyer le tampon modifié.


1
Je deviens nostalgique bkriszio.blogspot.com/2006/11/… .
bernd_k
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.