2011-09-19 18 views
6

boşluk varsa düzgün bir komut satırı argümanları tokenize değildir: test.sql takibeSQL * artı program yolu SQL * kullanarak Artı aşağıdaki komut satırı ile am

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

içeriği:

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

Sonuçlar:

  • SQL * Plus, yürütülebilir sonra C:\Program Files\Oracle Client\whatever\sqlplus.exe içindedir &&1Files\Oracle olarak değerlendirilir. SQL * Plus, yürütülebilir C:\Oracle\Client\10.2.xx\bin olduğunda
  • sonra &&1foo olarak değerlendirilir.
  • kimse bu sorunla karşılaşırsanız ve bunu aşmak için bir yol oldu mu

?

cevap

2
düzgün boşluklu argümanları yakalamak için komut satırı ve define deyimi hem de çift tırnak kullanmanız gerekir

.

Senaryo:

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

Komut satırı:

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