2011-09-19 56 views
6

我使用SQL * Plus中使用以下命令行空格不記號化的命令行參數:的SQL * Plus的情況下正確的程序路徑包含

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

test.sql如下的內容:

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

結果:

  • 當SQL * Plus可執行文件是C:\Program Files\Oracle Client\whatever\sqlplus.exe然後&&1評估爲Files\Oracle
  • 當SQL * Plus可執行文件位於C:\Oracle\Client\10.2.xx\bin時,則&&1的計算結果爲foo

有沒有人遇到過這個問題,並有辦法規避它?

回答

2

您需要在命令行和define語句中使用雙引號才能正確捕獲帶空格的參數。

腳本:

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

命令行:

sqlplus user/[email protected] @test.sql "foo bar" 
相關問題