어떻게 든 SQL * Plus (적어도 Windows에서는)는 호출 @@
될 때와 경로가 단일 또는 이중 점으로 시작할 때 상대 경로가있는 스크립트를 찾을 수없는 것 같습니다 .
예를 들어, 아래 x:\some\where
디렉토리 구조는 다음과 같습니다.
script.sql
main-dir\main-sub-dir
call-script.sql
script.sql
즉, 둘이 script.sql
지만 다른 위치에 있습니다.
script.sql
바로 아래 의 내용 x:\some\where
은 단순히
prompt SCRIPT root
다른 사람 script.sql
의 내용은
prompt SCRIPT main-dir/main-subdir
call-script.sql
읽는다
@@script.sql
@ script.sql
예상 출력
SQL * Plus를 x:\some\where
시작한 다음
@main-dir/main-sub-dir/call-scripts
출력은
SCRIPT main-dir/main-subdir
SCRIPT root
단일 @
은 SQL * Plus가 시작된 @@
경로를 검색해야하고 포함하는 스크립트의 디렉토리에서 경로를 검색해야하기 때문에 예상됩니다.
예기치 않은 출력
이제 변경 call-scripts.sql
하면 다음과 같습니다.
@@./script.sql
@ ./script.sql
double @@
은 SQL * Plus가 시작된 경로를 검색한다는 점에서 동작을 변경하는 것으로 보이며 이제 출력은
SCRIPT root
SCRIPT root
내가 기대 한 것이 아닙니다 .
이 동작은 어딘가에 기록되어 있으며, 더 중요한 것은 call-scripts.sql
상대 경로 ( @@../../other-dir/other-sub-dir/script
)를 올바르게 호출 하도록 변경 해야하는 방법은 무엇입니까?
strace
. 여기에 관련 통화의 : pastebin.com/cVK1QQu4의 는 페이스트 빈 출력에서 볼 수있는 사람을 열 시도하기 전에 다른 디렉토리에 합계 또는 액세스 "script.sql"파일을 시도하지 않았다하는 것으로.