2009-04-28 18 views
6

escribo:¿Por qué ORACLE no permite caracteres consecutivos de nueva línea en los comandos?

  • : CREAR TABLA persona (
  • : nombre CHAR (10),
  • :
  • : INTEGER SSN);

y guardarlo en un archivo "a.sql" (dos puntos representa principio de la línea, no está en código real.)

si yo ejecuto escribiendo "@ un" en el SQL * Con el símbolo del sistema, me dirá que la línea que comienza con "ssn" no se reconoce como un comando y se ignora.

Según lo que veo, parece que sqlplus finaliza un comando si encuentra múltiples caracteres de nueva línea en una fila. ¿Es esto una declaración precisa? Si es así, ¿alguien sabe si esto es necesario/por qué elige hacer esto?

Respuesta

15

No sé por qué, pero una línea completamente en blanco termina un comando en SQL * Plus.

Presupuesto de the SQL*Plus docs:

Finalización de un comando SQL: Puede terminar un comando SQL en una de tres maneras:

  • con un punto y coma (;)
  • con una barra (/) en una línea sola
  • con una línea en blanco

También puede cambiar la forma de líneas en blanco son tratados con SQLBLANKLINES SET

SQLBL [ANKLINES] {ON | OFF}

Controla si SQL * Plus permite que las líneas en blanco dentro de un comando SQL o guión. ON interpreta líneas en blanco y nuevas líneas como parte de un comando o script SQL. OFF, el valor predeterminado, no permite líneas en blanco o nuevas líneas en un comando SQL o secuencia de comandos o secuencia de comandos.

Ingrese el BLOCKTERMINATOR para detener la entrada del comando SQL sin ejecutar el comando SQL. Ingrese el carácter SQLTERMINATOR para detener la entrada del comando SQL y ejecutar la declaración SQL.

5

De manera predeterminada, SQLPlus finaliza (pero no ejecuta) una declaración cuando se ingresa una línea en blanco. Siempre ha hecho esto. Probablemente parecía una buena idea en los días previos a los editores de pantalla y las herramientas de consulta.

Usted puede cambiar ese comportamiento por defecto con

SQLBLANKLINES conjunto de

En cuyo caso habría que introducir una línea con sólo un punto de interrumpir (pero no ejecutar) una declaración.

0

Pero si usted está deseando para insertar texto de varias líneas en un VARCHAR2 o un campo CLOB, puede utilizar CHR (10)

insert into t values ('Hello,'||chr(10)||chr(10)||' How are you?'); 

insert into t values (
'Hello, 

How are you'); 

no va a funcionar por las razones explicadas anteriormente.

Cuestiones relacionadas