Oracle sqlplus:从脚本位置开始的相对路径
当我有两个sql文件时,其中一个在子目录中Oracle sqlplus:从脚本位置开始的相对路径,sql,oracle10g,sqlplus,Sql,Oracle10g,Sqlplus,当我有两个sql文件时,其中一个在子目录中 main_test.sql sub/sub_test.sql sub> sqlplus xxx @ sub_test.sql 和sub_test.sql调用@../main_test.sql(或@../main_test.sql),然后从子目录执行它时,它可以正常工作 main_test.sql sub/sub_test.sql sub> sqlplus xxx @ sub_test.sql 但是当我打电话的时候 sub> c
main_test.sql
sub/sub_test.sql
sub> sqlplus xxx @ sub_test.sql
和sub_test.sql
调用@../main_test.sql
(或@../main_test.sql
),然后从子目录执行它时,它可以正常工作
main_test.sql
sub/sub_test.sql
sub> sqlplus xxx @ sub_test.sql
但是当我打电话的时候
sub> cd ..
> sqlplus xxx @ sub/sub_test.sql
这导致
SP2-0310: unable to open file "../main_test.sql"
因为路径是从我的工作目录计算的,而不是我调用的sql文件的目录
有没有一种方法可以使用从包含调用的文件目录开始的相对路径?恐怕我不知道如何实现这一点,但它确实说明了这种托管脚本方法的一个问题 我记得当我在v7.1中开始使用Oracle时,我们几乎所有的事情都会使用脚本,但是有太多的任务只能通过外部脚本来完成,所以您也可以将它们用于所有事情。然而,我认为在每一个版本中这样做的理由已经少了,我现在唯一的理由就是用11g将其重构为pl/sql。(在我看来,SP2-0310错误行中的文件名键入错误。我相信您要指出的文件是“./main_test.sql”,我将继续这一行) 如果您在包含main_test.sql的目录中执行sub/sub_test.sql,并且在sub/sub_test.sql中调用main_test.sql作为“./main_test.sql”,是的,您将得到一个错误,因为您当前的工作目录是包含main_test.sql的目录,所以使用“.”查找一个目录级别这是行不通的。在这种情况下,您需要删除“.”或使用“.”(单句点-表示当前目录)以使工作正常进行
共享和享受。遗憾的是,不支持“文件”url,因为这在使用“http://”路径时实际上非常有效 我设置了“sub_test\sub_test.sql”来包含双ats:
@@../main.sql
将整个目录结构放在Tomcat webapps/ROOT上下文下,如果您这样调用它,它就会工作:
SQL> @http://host:port/sub_test/sub_test.sql
我想可能是设置web服务器有点过火吧??(显然也适用于FTP-未试用过)。谢谢!我知道将其更改为“.”在这种情况下会有所帮助,但在主目录下当然不起作用。我想的是告诉脚本不要将当前工作目录作为相对路径,而是脚本实际所在的目录。脚本“知道”其他脚本与它自己的位置相比,我希望它不要考虑我当前的工作目录,这是不相关的……你是指DDL作为一个新的代码部署的一部分,还是作为一个普通的批作业的一部分(例如)?谢谢尝试和分享:)我不需要这个,不过,我不认为我会设置一个web服务器。