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
@@script.sql @ script.sql
If I start SQL*Plus from
x:\some\where and then do a
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.
Now, if I change
@@./script.sql @ ./script.sql
@@ 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 (