В чем разница между завершением оператора SQL sql точкой с запятой или косой чертой в следующей строке?


8

Следующие два запроса кажутся эквивалентными при выполнении в sql * plus:

1.

select * from user_tables;

2.

select * from user_tables
/

Есть ли разница между обеими версиями?

Ответы:


11

Нет разницы для одного оператора SQL. Символ / в отдельной строке указывает SQL * Plus выполнить команду в буфере. Вы можете использовать точку с запятой в конце большинства операторов SQL как сокращение для «/». Если вы хотите выполнить блок PL / SQL или выполнить несколько операторов SQL, например CREATE TYPE, вам нужно использовать «/»

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.

Различные инструменты могут иметь несколько разные соглашения о том, как выполнять несколько операторов SQL и PL / SQL в сценарии, поэтому имейте в виду, что это специфично для SQL * Plus.


Это аналогично SQL Server GO? (В основном, пакетный сепаратор.)
Ник Чаммас

@NickChammas - Более или менее, да.
Джастин Кейв

5

И помимо того, что упомянул Джастин - поскольку он /выполняет все, что находится в буфере, его также можно использовать после редактирования предыдущей команды или даже просто для запуска одной и той же команды несколько раз.

Если вы edвызовете sqlplus, он попытается записать временный файл AFIEDT.BUFв ваш текущий каталог, а затем вызовет редактор (vi, блокнот и т. Д.), Чтобы вы могли отредактировать последнюю отправленную команду. Когда вы выходите из редактора, вы используете /для отправки измененный буфер.


1
Я получаю ностальгию bkriszio.blogspot.com/2006/11/… .
bernd_k
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.