Algunas declaraciones como crear tabla, insertar en etc. toman un punto y coma al final:
CREATE TABLE employees_demo
( employee_id NUMBER(6)
, first_name VARCHAR2(20)
, last_name VARCHAR2(25)
CONSTRAINT emp_last_name_nn_demo NOT NULL
) ;
mientras que a otros les gusta
set echo on
connect system/manager
pasar sin el punto y coma también.
¿Cuál es el razonamiento detrás de esto? ¿Cómo puedo decidir dónde poner el punto y coma y dónde no?
oracle
oracle-11g-r2
sqlplus
Lazer
fuente
fuente
Respuestas:
Los comandos de la instancia local se ejecutan al regresar. Los comandos de varias líneas para el servidor se ejecutan en punto y coma.
Los comandos especiales detallados en el manual de SQL * Plus son los únicos que no aceptan punto y coma. Los comandos SQL de Wheras deben terminar con a
;
para ser analizados por el servidor.fuente
Cuando ingresa una instrucción SQL en SQL * Plus, necesita saber cuándo ha terminado, especialmente si el comando abarca varias filas. Por lo tanto, requiere un carácter de carácter terminal que se puede establecer con
set sqlterminator
. Por defecto, este personaje es el punto y coma:Ahora, cambiando este carácter de terminal a
#
:La instrucción SQL finalizó (finalizó ejecutada) con a
#
.Usted pregunta: ¿por qué
set sqlterminator #
no fue seguido por un punto y coma? Respuesta, porque esto no es una declaración SQL. Las declaraciones relacionadas con SQL * Plus y su comportamiento, salida, conexión asf (comoset echo on
yconnect system/manager
) no son declaraciones SQL y, por lo tanto, se ingresan sin punto y coma.¿Qué tiene esto que ver con el
/
?Cuando ingresó una instrucción SQL, SQL * plus llenó algo que llama un búfer. Este búfer se puede mostrar con el
list
comando:(Nota: solo ingresé a la lista , el resto se devuelve)
El
/
ahora ejecuta lo que está actualmente en el búfer. Probemos eso:Como se puede ver, se ejecuta la misma consulta.
fuente
El punto y coma es el punto de secuencia para el analizador SQL, mientras que los comandos que se ejecutan dentro de SQL * Plus se ejecutan inmediatamente de todos modos. Como analogía, compare los puntos y comas en un programa en C con los comandos ingresados en el shell.
fuente
Según tengo entendido, el analizador de SQL general tiene mucho en común con el analizador de JavaScript general, ya que le gustaría un punto y coma después de cada lugar apropiado, pero no es obligatorio, excepto en ciertas circunstancias. Cuando me enseñaron a escribir SQL, me dijeron que un punto y coma era parte del lenguaje, no un operador adicional que podríamos ignorar.
fuente