2011-09-19 6 views
6

sto usando SQL * Plus con la seguente riga di comando:SQL * Plus non tokenize suoi argomenti della riga di comando correttamente quando il percorso del programma contiene spazi

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

Il contenuto di test.sql segue:

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

Risultati:

  • Quando SQL * Plus eseguibile è in C:\Program Files\Oracle Client\whatever\sqlplus.exe poi &&1 valuta a Files\Oracle.
  • Quando l'eseguibile SQL * Plus è C:\Oracle\Client\10.2.xx\bin, quindi &&1 restituisce foo.

Qualcuno ha riscontrato questo problema e ha avuto modo di aggirarlo?

risposta

2

È necessario utilizzare virgolette doppie sia sulla riga di comando che sull'istruzione define per acquisire correttamente gli argomenti con spazi.

Script:

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

Riga di comando:

sqlplus user/[email protected] @test.sql "foo bar" 
Problemi correlati