2011-09-19 2 views
6

공백이 포함 된 경우 제대로의 명령 줄 인수를 토큰 화하지 않습니다 test.sql 추적의의 SQL * 플러스 프로그램 경로가 나는 SQL의 *를 사용하여 플러스 다음 명령 줄을하고

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

내용 :

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

결과 :

  • 의 SQL * Plus를 실행 한 다음 C:\Program Files\Oracle Client\whatever\sqlplus.exe&&1Files\Oracle으로 평가됩니다.
  • SQL * Plus 실행 파일이 C:\Oracle\Client\10.2.xx\bin 인 경우 &&1foo으로 평가됩니다.

누구든지이 문제를 겪었으며이를 피할 방법이 있었습니까?

답변

2

공백으로 인수를 올바르게 캡처하려면 명령 줄과 define 문에 큰 따옴표를 사용해야합니다.

스크립트 :

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

명령 행 :

sqlplus user/[email protected] @test.sql "foo bar" 
관련 문제