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 on
e 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 list
comando:
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.