代码之家  ›  专栏  ›  技术社区  ›  Peter Lang

Oracle sqlplus:从脚本位置开始的相对路径

  •  6
  • Peter Lang  · 技术社区  · 15 年前

    当我有两个SQL文件时,其中一个在子目录中

    main_test.sql
    sub/sub_test.sql
    

    sub_test.sql 电话 @../main_test.sql (或) @@../main_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文件的目录。

    有没有一种从包含调用的文件目录开始使用相对路径的方法?

    3 回复  |  直到 13 年前
        1
  •  3
  •   monojohnny    15 年前

    遗憾的是,不支持“file”URL,因为使用“http://”路径时,这实际上非常有效!

    我设置了“sub-test\sub-test.sql”来包含双ATS:

    @@../main.sql
    

    把整个目录结构放在tomcat webapps/root上下文下,如果您这样调用,它就会工作:

    SQL> @http://host:port/sub_test/sub_test.sql
    

    我想,设置Web服务器可能有点过分了吧??(显然也适用于ftp-未尝试过)。

        2
  •  1
  •   David Aldridge    15 年前

    恐怕我不知道实现这一点的方法,但它确实说明了这种托管脚本方法的一个问题。

    我记得当我在V7.1中开始使用Oracle时,无论我们将如何使用脚本来处理几乎所有的事情,但是有太多的任务只能通过外部脚本来完成,您也可以将它们用于所有的事情。不过,我认为对于每个版本,这样做的理由都比较少,现在我只有一个版本可以用11g重构为pl/sql。

        3
  •  1
  •   Bob Jarvis - Слава Україні    15 年前

    (在我看来,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的目录,因此使用“..”查找一个目录级别将不起作用。在这种情况下,您需要删除“..”或使用“.”(单句点-表示当前目录)以使事情正常工作。

    分享和享受。