我正在使用SQL * Plus和以下命令行:
sqlplus user/pw@TNS @test.sql foo
test.sql
的内容如下:
SET VERIFY ON
DEFINE argone='&&1'
SELECT '&argone' FROM dual;
EXIT SQL.sqlcode
结果:
C:\Program Files\Oracle Client\whatever\sqlplus.exe
时,&&1
评估为Files\Oracle
。C:\Oracle\Client\10.2.xx\bin
时,&&1
评估为foo
。有没有人遇到过这个问题并有办法绕过它?
答案 0 :(得分:2)
您需要在命令行和define
语句中使用双引号来正确捕获带空格的参数。
脚本:
SET VERIFY ON
DEFINE argone="&&1"
SELECT '&argone' FROM dual;
EXIT SQL.sqlcode
命令行:
sqlplus user/pw@TNS @test.sql "foo bar"