2009-12-15 28 views
6

Khi tôi có hai sql-tác phẩm, một trong số họ trong một thư mục conOracle sqlplus: đường dẫn tương đối bắt đầu từ vị trí của kịch bản

main_test.sql 
sub/sub_test.sql 

sub_test.sql cuộc gọi @../main_test.sql (hoặc @@../main_test.sql) sau đó làm việc này tốt khi thực hiện nó từ thư mục con

sub> sqlplus xxx @ sub_test.sql 

Nhưng khi tôi gọi

sub> cd .. 
> sqlplus xxx @ sub/sub_test.sql 

kết quả này trong

SP2-0310: unable to open file "../main_test.sql" 

kể từ khi con đường được đánh giá từ thư mục làm việc của tôi, không phải là thư mục của sql-file tôi gọi.

Có cách nào để sử dụng đường dẫn tương đối bắt đầu từ thư mục chứa tệp có cuộc gọi không?

Trả lời

3

Xấu hổ url 'tệp' không được hỗ trợ - vì điều này thực sự hoạt động rất tốt khi sử dụng đường dẫn 'http: //'!

tôi thiết lập 'sub_test \ sub_test.sql' để chứa đúp ATS:

@@../main.sql 

đặt cấu trúc thư mục toàn bộ dưới một webapps Tomcat/bối cảnh ROOT và nó hoạt động nếu bạn gọi như thế này:

SQL> @http://host:port/sub_test/sub_test.sql 

Có lẽ một chút quá mức cần thiết khi thiết lập máy chủ web tôi đoán? (Cũng làm việc với FTP rõ ràng - không thử nó).

+0

Cảm ơn bạn đã cố gắng và chia sẻ :) Như tôi không thực sự cần điều này, tôi không nghĩ rằng tôi sẽ thiết lập một máy chủ web mặc dù. –

1

Tôi không biết cách nào để đạt được điều này tôi sợ, nhưng nó minh họa một trong những vấn đề của cách tiếp cận tập lệnh được lưu trữ này.

Tôi nhớ lại khi tôi bắt đầu với Oracle trong phiên bản 7.1. Bất cứ điều gì chúng tôi sẽ sử dụng tập lệnh cho hầu hết mọi thứ, nhưng có rất nhiều tác vụ chỉ có thể đạt được với các tập lệnh bên ngoài mà bạn có thể sử dụng chúng cho mọi thứ. Tuy nhiên tôi nghĩ rằng đã có ít lý do để làm như vậy với mỗi bản phát hành, và những người duy nhất tôi có bây giờ sẽ được refactored để pl/sql với 11g.

+0

Điều gì, ngay cả các tập lệnh DDL? – APC

+0

Bạn có nghĩa là DDL như là một phần của việc triển khai mã mới hay là một phần của công việc hàng loạt thông thường (ví dụ). –

1

(Có vẻ như tôi tên tệp trong dòng có lỗi SP2-0310 bị nhập sai. Tôi tin rằng tệp bạn muốn chỉ định là "../main_test.sql" và tôi sẽ tiếp tục dòng đó).

Nếu bạn đang ở trong thư mục chứa main_test.sql và bạn thực hiện sub/sub_test.sql, và bên trong sub/sub_test.sql bạn gọi main_test.sql là "../main_test.sql", vâng, bạn sẽ gặp lỗi vì thư mục làm việc hiện tại của bạn là thư mục chứa main_test.sql, vì vậy việc tìm kiếm một cấp thư mục bằng cách sử dụng ".." sẽ không hoạt động. Trong trường hợp này, bạn cần xóa ".." hoặc sử dụng "." (một khoảng thời gian - cho biết thư mục hiện tại) để có được những thứ để làm việc.

Chia sẻ và thưởng thức.

+1

Cảm ơn! Tôi biết rằng thay đổi nó thành "." sẽ giúp đỡ trong trường hợp đó, nhưng sau đó nó sẽ không làm việc từ thư mục chính của khóa học. Những gì tôi đã nghĩ đến là một cách để nói cho kịch bản không để lấy thư mục làm việc hiện tại cho các đường dẫn tương đối, nhưng thư mục nơi tập lệnh thực sự được đặt.Các kịch bản "biết", nơi các kịch bản khác được so sánh với vị trí riêng của nó, và tôi muốn nó không xem xét thư mục làm việc hiện tại của tôi mà không phải là có liên quan ... –

Các vấn đề liên quan