当程序路径包含空格时,SQL * plus不会正确地标记其命令行参数

时间:2011-09-19 12:13:02

标签: oracle whitespace sqlplus

我正在使用SQL * Plus和以下命令行:

sqlplus user/pw@TNS @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

有没有人遇到过这个问题并有办法绕过它?

1 个答案:

答案 0 :(得分:2)

您需要在命令行和define语句中使用双引号来正确捕获带空格的参数。

脚本:

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

命令行:

sqlplus user/pw@TNS @test.sql "foo bar"