17

windows下如何更改SQL Plus中的当前目录。

我正在尝试使用几个“@文件名”命令编写脚本。

我知道可以使用 File --> Open 命令打开脚本,这将更改当前目录,但我正在寻找一种自动无人值守的方法。


解析度

根据 Plasmer 的响应,我在 Windows 中设置了 SQLPATH 环境变量,并得到了对我来说足够好的东西。我没有尝试使用 HOST 命令设置它(我怀疑它会起作用)。

Pourquoi Litytestdata 的答案很好,但对我不起作用(目录相距太远)。当然,盖伊关于无法完成的回答也是正确的。我会投票给这两个,并接受 Plasmer 的回答。

4

9 回答 9

20

这就是我所做的。

定义一个变量来帮助你:

define dir=C:\MySYSTEM\PTR190\Tests\Test1

@&dir\myTest1.sql

您不能cd在 SQL*Plus 中(您可以cd使用 host 命令,但由于它是子进程,因此该设置不会保留在您的父进程中)。

于 2010-04-15T14:22:18.350 回答
11

我不认为您可以更改 SQL*Plus 中的目录。

您可以使用 代替更改目录,@@filename它会读取另一个脚本,该脚本的位置与当前脚本正在运行的目录相关。例如,如果您有两个脚本

C:\Foo\Bar\script1.sql
C:\Foo\Bar\Baz\script2.sql

如果它包含该行,则script1.sql可以运行script2.sql

@@Baz\script2.sql

有关. _ _@@

于 2009-02-03T22:05:24.163 回答
9

您能否使用 SQLPATH 环境变量告诉 sqlplus 在哪里查找您尝试运行的脚本?我相信您也可以使用 HOST 在脚本中设置 SQLPATH。

如果两个脚本具有相同的名称并且两个目录都在 SQLPATH 中,则可能会出现问题。

于 2009-02-03T22:42:14.387 回答
4

我不认为你可以!

/home/export/user1 $ sqlplus / 
> @script1.sql
> HOST CD /home/export/user2
> @script2.sql

script2.sql 必须在/home/export/user1.

您要么使用完整路径,要么退出脚本并sqlplus从正确的目录重新开始。

#!/bin/bash
oraenv .
cd /home/export/user1
sqlplus / @script1.sql
cd /home/export/user2
sqlplus / @script2.sql

(类似的东西 - 从记忆中做这个!)

于 2009-02-03T21:58:26.330 回答
3

对于 Oracle 的新 SQLcl,现在有一个 cd 命令和随附的 pwd。SQLcl 可以在这里下载:http ://www.oracle.com/technetwork/developer-tools/sqlcl/overview/index.html

这是一个简单的例子:

SQL>pwd
/Users/klrice/
NOT_SAFE>!ls *.sql
db_awr.sql  emp.sql     img.sql     jeff.sql    orclcode.sql    test.sql
db_info.sql fn.sql      iot.sql     login.sql   rmoug.sql

SQL>cd sql
SQL>!ls *.sql
003.sql             demo_worksheet_name.sql     poll_so_stats.sql
1.sql               dual.sql            print_updates.sql

SQL>
于 2018-06-10T13:21:18.913 回答
2

您是否尝试过为 sql plus 创建 Windows 快捷方式并设置工作目录?

于 2009-02-03T21:59:32.693 回答
2

我认为 SQLPATH 环境变量是最好的方法 - 如果您有多个路径,请输入以分号 (;) 分隔的路径。请记住,如果目录中存在同名的脚本文件,遇到的第一个(按路径输入的顺序)将被执行,第二个将被忽略。

于 2016-08-11T21:18:37.070 回答
2

多年后,我遇到了同样的问题。我的解决方案是创建一个临时批处理文件和另一个 sqlplus 实例:

在第一个 SQL 脚本中:

:
set echo off
spool sqlsub_tmp.bat
prompt cd /D D:\some\dir
prompt sqlplus user/passwd@tnsname @second_script.sql
spool off
host sqlsub_tmp.bat
host del sqlsub_tmp.bat
:

请注意,如果您想返回第一个,“second_script.sql”最后需要一个“exit”语句。

于 2017-02-06T15:58:21.700 回答
-2

对我来说,shelling-out 可以完成这项工作,因为它使您可以在 shell 上运行 [a|any] 命令:

http://www.dba-oracle.com/t_display_current_directory_sqlplus.htm

总之查看当前目录:

!pwd

更改

!cd /path/you/want

于 2016-08-22T10:08:00.770 回答