Her nasılsa, SQL * Plus'ın (en azından Windows'ta) çağrıldığında @@
ve yol tek veya çift nokta ile başladığında göreli yol içeren bir komut dosyasını bulamıyor gibi görünüyor .
Örneğin, altında x:\some\where
aşağıdaki dizin yapısına sahibim:
script.sql
main-dir\main-sub-dir
call-script.sql
script.sql
Yani: iki script.sql
ama farklı yerlerde.
script.sql
Az altındaki içerik x:\some\where
sadece
prompt SCRIPT root
diğerinin script.sql
içeriği ise
prompt SCRIPT main-dir/main-subdir
call-script.sql
okur
@@script.sql
@ script.sql
beklenen çıktı
SQL * Plus'ı çalıştırıp x:\some\where
bir
@main-dir/main-sub-dir/call-scripts
Çıktı
SCRIPT main-dir/main-subdir
SCRIPT root
Bu beklenir, çünkü tek @
SQL * Plus'ın başlatıldığı @@
yolları aramalı ve içeren komut dosyasının dizinindeki yolları aramalıdır.
beklenmedik çıktı
Şimdi , eğer bunu değiştirirsem call-scripts.sql
:
@@./script.sql
@ ./script.sql
çift @@
, davranışını değiştiriyor gibi görünüyor, çünkü SQL * Plus'ın başladığı yerden yollar arıyor ve çıktı şimdi olacak
SCRIPT root
SCRIPT root
hangi değil beklediğim.
Bu davranış bir yerde belgelenmiş ve daha da önemlisi, call-scripts.sql
göreli yolları ( @@../../other-dir/other-sub-dir/script
) doğru çağırmak için nasıl değiştirmek zorundayım ?
strace
. İlgili aramalar şunlardır : pastebin.com/cVK1QQu4 Yapıştırmalı çıktıda görülenleri açmaya çalışmadan önce "script.sql" dosyalarına başka bir dizinde erişmeye veya bunlara erişmeye çalışmadığını unutmayın.