Was ist der Unterschied zwischen dem Beenden einer Oracle SQL-Anweisung mit einem Semikolon oder einem Schrägstrich in der nächsten Zeile?

8

Die folgenden zwei Abfragen scheinen bei Ausführung in SQL * Plus gleichwertig zu sein:

1.

select * from user_tables;

2.

select * from user_tables
/

Gibt es einen Unterschied zwischen beiden Versionen?

bernd_k
quelle

Antworten:

11

Es gibt keinen Unterschied für eine einzelne SQL-Anweisung. Das Zeichen '/' in der eigenen Zeile weist SQL * Plus an, den Befehl im Puffer auszuführen. Sie können das Semikolon am Ende der meisten SQL-Anweisungen als Abkürzung für das '/' verwenden. Wenn Sie einen PL / SQL-Block ausführen oder eine Handvoll SQL-Anweisungen ausführen möchten CREATE TYPE, müssen Sie jedoch das '/'

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.

Verschiedene Tools haben möglicherweise leicht unterschiedliche Konventionen für die Ausführung mehrerer SQL- und PL / SQL-Anweisungen in einem Skript. Beachten Sie daher, dass dies SQL * Plus-spezifisch ist.

Justin Cave
quelle
Ist es dann analog zu SQL Server GO? (Grundsätzlich ein Batch-Separator.)
Nick Chammas
@ NickChammas - Mehr oder weniger ja.
Justin Cave
5

Und abgesehen von dem, was Justin erwähnt hat - da das ausgeführt wird, /was sich im Puffer befindet, kann es auch nach dem Bearbeiten des vorherigen Befehls oder sogar nur zum mehrmaligen Ausführen desselben Befehls verwendet werden.

Wenn Sie edsqlplus aufrufen, wird versucht, eine temporäre Datei AFIEDT.BUFin Ihr aktuelles Verzeichnis zu schreiben und anschließend einen Editor (vi, notepad usw.) aufzurufen, damit Sie den zuletzt gesendeten Befehl bearbeiten können. Wenn Sie den Editor verlassen haben, /senden Sie den geänderten Puffer.

Joe
quelle
1
Ich bekomme nostalgisch bkriszio.blogspot.com/2006/11/… .
Bernd_k