WindowsでSQL Plusの現在のディレクトリをどのように変更しますか。
いくつかの "@ filename"コマンドを使用してスクリプトを記述しようとしています。
現在のディレクトリを変更するFile-> Openコマンドでスクリプトを開くことができることは知っていますが、これを自動的に無人で行う方法を探しています。
Plasmerの応答に基づいて、WindowsでSQLPATH環境変数を設定し、私にとって十分なものを得ました。 Hostコマンドで設定しようとはしませんでした(うまくいくとは思えません)。
Pourquoi Litytestdataの答えは良いですが、私にはうまくいきません(ディレクトリが離れすぎています)。そしてもちろん、それを行うことができないというガイの答えも正しいです。私はこれら2つに投票し、プラスマーの回答を受け入れます。
SQLPATH環境変数を使用して、実行しようとしているスクリプトを探す場所をsqlplusに指示できますか? Hostを使用してスクリプトにSQLPATHを設定することもできると思います。
2つのスクリプトが同じ名前で、両方のディレクトリがSQLPATHにある場合、問題が発生する可能性があります。
これが私がすることです。
役立つ変数を定義します。
define dir=C:\MySYSTEM\PTR190\Tests\Test1
@&dir\myTest1.sql
SQL * Plusでcd
することはできません(Hostコマンドを使用してcd
することはできますが、子プロセスであるため、設定は親プロセスに保持されません)。
SQL * Plusでディレクトリを変更できるとは思いません。
ディレクトリを変更する代わりに、@@filename
を使用できます。これは、現在のスクリプトが実行されているディレクトリに相対的な場所にある別のスクリプトを読み込みます。たとえば、2つのスクリプトがある場合
C:\ Foo\Bar\script1.sql C:\ Foo\Bar\Baz\script2.sql
次に、script1.sql
がscript2.sql
を実行できます。
@@ Baz\script2.sql
@@
の詳細については、 this を参照してください。
できないと思います!
/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
(そのようなもの-メモリからこれを行う!)
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>
SQL PlusのWindowsショートカットを作成して、作業ディレクトリを設定してみましたか?
これにはSQLPATH環境変数が最良の方法だと思います。複数のパスがある場合は、セミコロン(;)で区切って入力してください。ディレクトリ間で同じ名前のスクリプトファイルが存在する場合、最初に見つかった(パスが入力された順に)スクリプトが実行され、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」ステートメントが必要であることに注意してください。