某种程度上,似乎似乎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注意,在尝试打开pastebin输出中看到的文件之前,它没有尝试统计或访问任何其他目录中的“ script.sql”文件。