В SQL*Plus «/» и «;» — это совершенно разные символы и выполняют они разные функции.
Символ «;» заканчивает инструкцию SQL, а символ «/» выполняет записанное в текущем буфере, поэтому при одновременном использовании «;» и «/» инструкция будет выполнена дважды.
Это можно легко увидеть, если написать «/» после выполнения команды:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 18 12:37:20 2012 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning and OLAP options SQL> drop table foo; Table dropped. SQL> / drop table foo * ERROR at line 1: ORA-00942: table or view does not exist |
Явно видна ошибка повторного выполнения команды.
Теперь предположим, что у нас есть SQL-скрипт:
1 2 |
drop table foo; / |
И мы выполняем этот скрипт в SQL*Plus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 18 12:38:05 2012 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning and OLAP options SQL> @drop Table dropped. drop table foo * ERROR at line 1: ORA-00942: table or view does not exist |
Символ «/» в основном требуется для выполнения вложенных команд с «;», например CREATE PROCEDURE.