|
|
51CTO旗下网站
|
|
移动端

2.3.5 什么是“当前目录”

《Oracle PL/SQL程序设计(第6版)(上下册)》第2章创建和运行PL/SQL代码,本章将展示如何在一个最基本的层面上(使用SQL*Plus)完成上述任务,同时对这些细小差别进行大致的讲述。本节为大家介绍什么是“当前目录”。

作者:方鑫 译来源:人民邮电出版社|2017-09-06 19:44

2.3.5 什么是“当前目录”

任何时候,我们从操作系统提示符下启动SQL*Plus时,SQL*Plus把当时所在的操作系统目录视为自己的当前目录,换句话说,如果我们这样启动SQL*Plus:

  1. C:\BOB\FILES> sqlplus 

那么在SQL*Plus中所有的文件操作(例如打开或运行一个脚本),其默认目录都是“C:\BOB\FILES”。

如果我们通过快捷方式或是菜单选项来启动SQL*Plus,那么当前目录就由操作系统和不同的启动机制共同确定。那么,当我们已经进入SQL*Plus时,该如何改变当前目录呢?不同版本有不同的方式。如果是控制台版的SQL*Plus,将无法在SQL*Plus环境内改变当前目录,我们必须退出SQL*Plus,在操作系统提示符下改变目录,然后重新启动SQL*Plus。在GUI版本中,利用“File→Open”或“File→Save”菜单命令的副作用,就能够改变当前目录。

如果要执行其他目录下的脚本文件,我们可以在文件名前加上路径,示例如下:

  1. SQL> @/files/src/release/1.0/abc.pkg 

运行非当前目录的脚本文件会带来一个有趣的问题,如果abc.pkg文件存在于这个非当前目录,同时,还要调用其他文件,怎么办?比如,这个脚本里的命令是这样的:

  1. REM  Filename: abc.pkg  
  2. @abc.pks  
  3. @abc.pkb 

(用“REM”开头的行是一个注释行,SQL*Plus直接忽略)。执行abc.pkg脚本会调用abc.pks和abc.pkb,在我们没有指定路径信息的情况下,SQL*Plus会去哪里找这两个文件呢?让我们来看一下:

  1. C:\BOB\FILES> sqlplus  
  2. ...  
  3. SQL> @/files/src/release/1.0/abc.pkg  
  4. SP2-0310: unable to open file "abc.pks"  
  5. SP2-0310: unable to open file "abc.pkb" 

原来它还是去我们启动SQL*Plus的当前目录里寻找。

为了解决这个问题,Oracle创建了“@@”命令。双“@”符号意味着,在本次运行中,“假定所执行文件所在的目录就是当前目录”,所以,abc.pkg脚本更好的写法是:

  1. REM  Filename: abc.pkg  
  2. @@abc.pks  
  3. @@abc.pkb 

这次,我们得到如下结果:

  1. C:\BOB\FILES> sqlplus  
  2. ...  
  3. SQL> @/files/src/release/1.0/abc.pkg  
  4. Package created.  
  5. Package body created. 

这回,跟我们希望的一样了。

喜欢的朋友可以添加我们的微信账号:

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Java网络编程精解

本书结合大量的典型实例,详细介绍了用Java来编写网络应用程序的技术。本书的范例都基于最新的JDK 1.5版本,书中内容包括:Java网络编程的...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊