2011-09-19 14 views
6

estoy utilizando SQL * Plus con la siguiente línea de comandos:SQL * Plus no tokenize sus argumentos de línea de comandos correctamente cuando la ruta del programa contiene espacios

sqlplus user/[email protected] @test.sql foo 

El contenido de test.sql siguiente:

SET VERIFY ON 
DEFINE argone='&&1' 
SELECT '&argone' FROM dual; 
EXIT SQL.sqlcode 

resultados:

  • Cuando SQL * Plus es ejecutable en C:\Program Files\Oracle Client\whatever\sqlplus.exe continuación &&1 evalúa a Files\Oracle.
  • Cuando el archivo ejecutable SQL * Plus está en C:\Oracle\Client\10.2.xx\bin, &&1 se evalúa en foo.

¿Alguien encontró este problema y tuvo una forma de eludirlo?

Respuesta

2

Tendrá que utilizar comillas dobles tanto en la línea de comandos como en la instrucción define para capturar adecuadamente los argumentos con espacios.

Guión:

SET VERIFY ON 
DEFINE argone="&&1" 
SELECT '&argone' FROM dual; 
EXIT SQL.sqlcode 

Línea de comandos:

sqlplus user/[email protected] @test.sql "foo bar" 
Cuestiones relacionadas