¿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?

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.


¿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.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.