Следующие два запроса кажутся эквивалентными при выполнении в sql * plus:
1.
select * from user_tables;
2.
select * from user_tables
/
Есть ли разница между обеими версиями?
Нет разницы для одного оператора 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.
GO
? (В основном, пакетный сепаратор.)И помимо того, что упомянул Джастин - поскольку он
/
выполняет все, что находится в буфере, его также можно использовать после редактирования предыдущей команды или даже просто для запуска одной и той же команды несколько раз.Если вы
ed
вызовете sqlplus, он попытается записать временный файлAFIEDT.BUF
в ваш текущий каталог, а затем вызовет редактор (vi, блокнот и т. Д.), Чтобы вы могли отредактировать последнюю отправленную команду. Когда вы выходите из редактора, вы используете/
для отправки измененный буфер.источник