Quando você está inserindo uma instrução SQL no SQL * Plus, ele precisa saber quando você termina, especialmente se o comando abrange várias linhas. Portanto, requer um caractere de caractere de terminal que pode ser definido com o set sqlterminator. Por padrão, esse caractere é o ponto e vírgula:
SQL> select *
2 from
3 dual;
D
-
X
Agora, alterando esse caractere de terminal para #:
SQL> set sqlterminator #
SQL> select *
2 from
3 dual#
D
-
X
A instrução SQL foi finalizada (finalizada) com a #.
Você pergunta: por que set sqlterminator #não foi seguido por um ponto e vírgula? Resposta, porque esta não é uma instrução SQL. As instruções relacionadas ao SQL * Plus e seu comportamento, saída e conexão asf (como set echo one connect system/manager) não são instruções SQL e, portanto, são inseridas sem o ponto e vírgula.
O que isso tem a ver com o /?
Quando você inseriu uma instrução SQL, o SQL * plus preencheu algo que chama de buffer. Este buffer pode ser mostrado com o listcomando:
SQL> list
1 select *
2 from
3* dual
SQL>
(Nota: eu entrei apenas na lista , o restante é retornado)
O /agora executa o que está atualmente no buffer. Vamos tentar isso:
SQL> /
D
-
X
Como pode ser visto, a mesma consulta é executada.