web-dev-qa-db-ja.com

SQL Plus現在のディレクトリを変更

WindowsでSQL Plusの現在のディレクトリをどのように変更しますか。

いくつかの "@ filename"コマンドを使用してスクリプトを記述しようとしています。

現在のディレクトリを変更するFile-> Openコマンドでスクリプトを開くことができることは知っていますが、これを自動的に無人で行う方法を探しています。


解決

Plasmerの応答に基づいて、WindowsでSQLPATH環境変数を設定し、私にとって十分なものを得ました。 Hostコマンドで設定しようとはしませんでした(うまくいくとは思えません)。

Pourquoi Litytestdataの答えは良いですが、私にはうまくいきません(ディレクトリが離れすぎています)。そしてもちろん、それを行うことができないというガイの答えも正しいです。私はこれら2つに投票し、プラスマーの回答を受け入れます。

15
Andrew Stein

SQLPATH環境変数を使用して、実行しようとしているスクリプトを探す場所をsqlplusに指示できますか? Hostを使用してスクリプトにSQLPATHを設定することもできると思います。

2つのスクリプトが同じ名前で、両方のディレクトリがSQLPATHにある場合、問題が発生する可能性があります。

9
Plasmer

これが私がすることです。

役立つ変数を定義します。

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

@&dir\myTest1.sql

SQL * Plusでcdすることはできません(Hostコマンドを使用してcdすることはできますが、子プロセスであるため、設定は親プロセスに保持されません)。

20
Tom

SQL * Plusでディレクトリを変更できるとは思いません。

ディレクトリを変更する代わりに、@@filenameを使用できます。これは、現在のスクリプトが実行されているディレクトリに相対的な場所にある別のスクリプトを読み込みます。たとえば、2つのスクリプトがある場合

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

次に、script1.sqlscript2.sqlを実行できます。

 @@ Baz\script2.sql 

@@の詳細については、 this を参照してください。

10
Luke Woodward

できないと思います!

/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

(そのようなもの-メモリからこれを行う!)

4
Guy

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>
2
Kris Rice

SQL PlusのWindowsショートカットを作成して、作業ディレクトリを設定してみましたか?

2
Chetan Sastry

これにはSQLPATH環境変数が最良の方法だと思います。複数のパスがある場合は、セミコロン(;)で区切って入力してください。ディレクトリ間で同じ名前のスクリプトファイルが存在する場合、最初に見つかった(パスが入力された順に)スクリプトが実行され、2番目のスクリプトは無視されることに注意してください。

2
eRick

数年後、私は同じ問題を抱えていました。私の解決策は、一時的なバッチファイルと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」ステートメントが必要であることに注意してください。

2
IOIO