Qual è la differenza tra terminare un'istruzione sql Oracle con punto e virgola o con una barra nella riga successiva?


8

Le seguenti due query sembrano equivalenti quando eseguite in sql * plus:

1.

select * from user_tables;

2.

select * from user_tables
/

C'è qualche differenza tra le due versioni?

Risposte:


11

Non c'è differenza per una singola istruzione SQL. Il carattere '/' sulla propria riga indica a SQL * Plus di eseguire il comando nel buffer. È possibile utilizzare il punto e virgola alla fine della maggior parte delle istruzioni SQL come abbreviazione di '/'. Se si desidera eseguire un blocco PL / SQL o eseguire una manciata di istruzioni SQL come CREATE TYPE, tuttavia, è necessario utilizzare '/'

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.

Strumenti diversi possono avere convenzioni leggermente diverse su come eseguire più istruzioni SQL e PL / SQL in uno script, quindi tenere presente che si tratta di SQL * Plus specifico.


È analogo quindi a quello di SQL Server GO? (Fondamentalmente, un separatore di lotti.)
Nick Chammas,

@NickChammas - Più o meno, sì.
Grotta di Giustino,

5

E oltre a ciò che ha detto Justin - poiché /esegue qualunque cosa sia nel buffer, può anche essere usata dopo aver modificato il comando precedente, o anche solo per eseguire lo stesso comando più volte.

Se chiami edin sqlplus, proverà a scrivere un file temporaneo AFIEDT.BUFnella tua directory corrente, quindi visualizzerai un editor (vi, blocco note, ecc.) Per poter modificare l'ultimo comando inviato. Una volta usciti dall'editor, si utilizza /per inviare il buffer modificato.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.