¿Cuál es la diferencia entre terminar una instrucción SQL sql con punto y coma o con una barra diagonal en la siguiente línea?

8

Las siguientes dos consultas parecen ser equivalentes cuando se ejecutan en sql * plus:

1)

select * from user_tables;

2)

select * from user_tables
/

¿Hay alguna diferencia entre ambas versiones?

bernd_k
fuente

Respuestas:

11

No hay diferencia para una sola declaración SQL. El carácter '/' en su propia línea le dice a SQL * Plus que ejecute el comando en el búfer. Puede usar el punto y coma al final de la mayoría de las instrucciones SQL como una forma abreviada de '/'. Si desea ejecutar un bloque PL / SQL o ejecutar un puñado de sentencias SQL como CREATE TYPE, sin embargo, debe usar '/'

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.

Las diferentes herramientas pueden tener convenciones ligeramente diferentes sobre cómo ejecutar múltiples sentencias SQL y PL / SQL en un script, así que tenga en cuenta que esto es específico de SQL * Plus.

Justin Cave
fuente
¿Es análogo al de SQL Server GO? (Básicamente, un separador de lotes.)
Nick Chammas
@NickChammas - Más o menos, sí.
Justin Cave
5

Y además de lo que Justin mencionó, debido a que /ejecuta lo que sea que esté en el búfer, también se puede usar después de editar el comando anterior, o incluso solo para ejecutar el mismo comando varias veces.

Si llama eda sqlplus, intentará escribir un archivo temporal AFIEDT.BUFen su directorio actual y luego abrirá un editor (vi, bloc de notas, etc.), para que pueda editar el último comando enviado. Una vez que haya salido del editor, lo usará /para enviar el búfer modificado.

Joe
fuente
1
Me da nostalgia bkriszio.blogspot.com/2006/11/… .
bernd_k