簡體   English   中英

Oracle sqlplus:從腳本位置開始的相對路徑

[英]Oracle sqlplus: relative paths starting at position of script

當我有兩個sql文件時,其中一個在子目錄中

main_test.sql
sub/sub_test.sql

sub_test.sql調用@../main_test.sql (或@@../main_test.sql )然后這從子目錄執行它時工作正常

sub> sqlplus xxx @ sub_test.sql

但是當我打電話時

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

這導致了

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

因為路徑是從我的工作目錄評估的,而不是我調用的sql文件的目錄。

有沒有辦法從包含調用的文件目錄開始使用相對路徑?

遺憾的是'文件'網址不受支持 - 因為使用'http://'路徑時這實際上非常有效!

我設置'sub_test \\ sub_test.sql'來包含double-ats:

@@../main.sql

將整個目錄結構放在Tomcat webapps / ROOT上下文中,如果你這樣調用它就可以了:

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

我猜可能有點過度設置網絡服務器? (顯然也適用於FTP - 沒試過)。

我不知道如何實現這一點我害怕,但它確實說明了這種托管腳本方法的一個問題。

我記得當我在v7.1中開始使用Oracle時。我們幾乎所有的東西都會使用腳本,但是有很多任務只能通過外部腳本實現,你可以將它們用於所有事情。 但是我認為每次發布都有更少的理由這樣做,而我現在唯一的那些將被重構為帶有11g的pl / sql。

(在我看來,像SP2-0310錯誤行中的文件名是錯誤輸入的。我相信你想要表明的文件是“../main_test.sql”,我將按照這一行繼續)。

如果你在包含main_test.sql的目錄中並執行sub / sub_test.sql,並且在sub / sub_test.sql中你正在調用main_test.sql作為“../main_test.sql”,是的,你要去因為你當前的工作目錄是包含main_test.sql的目錄而導致錯誤,所以使用“..”查找一個目錄級別是行不通的。 在這種情況下,您需要刪除“..”或使用“。”。 (單個時段 - 表示當前目錄)以使事情發揮作用。

分享和享受。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM