As duas consultas a seguir parecem equivalentes quando executadas em sql * plus:
1
select * from user_tables;
2)
select * from user_tables
/
Existe alguma diferença entre as duas versões?
Não há diferença para uma única instrução SQL. O caractere '/' em sua própria linha informa ao SQL * Plus para executar o comando no buffer. Você pode usar o ponto-e-vírgula no final da maioria das instruções SQL como atalho para o '/'. Se você deseja executar um bloco PL / SQL ou executar algumas instruções SQL como CREATE TYPE
, no entanto, você precisa usar o '/'
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.
Ferramentas diferentes podem ter convenções um pouco diferentes sobre como você executa várias instruções SQL e PL / SQL em um script. Lembre-se de que isso é específico do SQL * Plus.
GO
? (Basicamente, um separador de lote.)E além do que Justin mencionou - porque
/
executa o que estiver no buffer, ele também pode ser usado após a edição do comando anterior, ou mesmo apenas para executar o mesmo comando várias vezes.Se você chamar o
ed
sqlplus, ele tentará gravar um arquivo temporárioAFIEDT.BUF
no diretório atual e, em seguida, abrirá um editor (vi, bloco de notas etc.) para editar o último comando enviado. Quando você sai do editor, usa/
para enviar o buffer modificado.fonte