web-dev-qa-db-fra.com

Quelle est la différence entre mettre fin à une instruction Oracle SQL avec point-virgule ou avec une barre oblique sur la ligne suivante?

Les deux questions 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?

8
bernd_k

Il n'y a pas de 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 déclarations SQL en tant que raccourci pour le '/'. Si vous souhaitez exécuter un bloc PL/SQL ou pour exécuter une poignée de déclarations 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 manière dont vous exécutez plusieurs instructions SQL et PL/SQL dans un script, sachez donc que c'est SQL * plus spécifique.

11
Justin Cave

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

Si vous appelez ed dans SQLPlus, il tentera d'écrire un fichier temporel AFIEDT.BUF Dans votre répertoire actuel, puis soulevez 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é.

5
Joe