2011-09-19 22 views
6

Tôi đang sử dụng SQL * Plus với dòng lệnh sau:SQL * plus không tokenize đối số dòng lệnh của nó đúng cách khi đường dẫn chương trình chứa dấu cách

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

Nội dung test.sql sau:

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

Kết quả:

  • Khi SQL * Plus thực thi là trong C:\Program Files\Oracle Client\whatever\sqlplus.exe sau đó &&1 đánh giá là Files\Oracle.
  • Khi thực thi SQL * Plus ở trong C:\Oracle\Client\10.2.xx\bin thì &&1 đánh giá là foo.

Có ai gặp phải vấn đề này và có cách phá vỡ nó không?

Trả lời

2

Bạn sẽ cần phải sử dụng dấu ngoặc kép ở cả dòng lệnh và câu lệnh define để nắm bắt đúng đối số bằng dấu cách.

Script:

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

dòng lệnh:

sqlplus user/[email protected] @test.sql "foo bar" 
Các vấn đề liên quan