Qual é a diferença entre encerrar uma instrução sql Oracle com ponto e vírgula ou com uma barra na próxima linha?


8

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?

Respostas:


11

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.


É análogo ao do SQL Server GO? (Basicamente, um separador de lote.)
Nick Chammas

@NickChammas - Mais ou menos, sim.
Justin Caverna

5

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 edsqlplus, ele tentará gravar um arquivo temporário AFIEDT.BUFno 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.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.