2011-09-19 8 views
6

używam SQL * Plus z następującym wierszu poleceń:SQL * Plus nie tokenize swoje argumenty wiersza polecenia prawidłowo, gdy ścieżka Program zawiera spacje

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

zawartość test.sql następująco:

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

Wyniki:

  • Kiedy SQL * Plus wykonywalny jest w C:\Program Files\Oracle Client\whatever\sqlplus.exe następnie &&1 ocenia na Files\Oracle.
  • Gdy plik wykonywalny SQL * Plus znajduje się w C:\Oracle\Client\10.2.xx\bin, wówczas &&1 jest oceniany jako foo.

Czy ktoś napotkał ten problem i miał sposób na obejście go?

Odpowiedz

2

Musisz użyć podwójnych cudzysłowów w wierszu poleceń i define, aby poprawnie uchwycić argumenty spacjami.

Scenariusz:

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

Linia komend:

sqlplus user/[email protected] @test.sql "foo bar" 
Powiązane problemy