Somehow, it seems that SQL*Plus (at least on Windows) is unable to locate a script with a relative path when called with @@ and when the path starts with a single or double dot.
For example, under x:\some\where I have the following directory structure:
script.sql
main-dir\main-sub-dir
call-script.sql
script.sql
That is: two script.sql but at different locations.
The content of script.sql just under x:\some\where is simply
prompt SCRIPT root
while the other script.sql's content is
prompt SCRIPT main-dir/main-subdir
call-script.sql reads
@@script.sql
@ script.sql
expected output
If I start SQL*Plus from x:\some\where and then do a
@main-dir/main-sub-dir/call-scripts
The output will be
SCRIPT main-dir/main-subdir
SCRIPT root
This is expected, since the single @ is supposed to search paths from where SQL*Plus was started and @@ is supposed to search paths from the containing script's directory.
unexpected output
Now, if I change call-scripts.sql so:
@@./script.sql
@ ./script.sql
the double @@ seems to change it's behaviour, in that it searches paths from where SQL*Plus was started, and the output will now be
SCRIPT root
SCRIPT root
which is not what I expected.
Is this behaviour documented somewhere, and more importantly, how do I have to change call-scripts.sql so that it calls relative paths (@@../../other-dir/other-sub-dir/script) correctly?