システムコマンド(OSコマンド)を実行する
HOST はオペレーティングシステムの実行モジュール呼び出すためのコマンド
HOST コマンド
HOST コマンドの構文
HOST [command]
短縮形
HO [command]
コマンドを指定しない場合にはシェル、または、コマンドプロンプトが単独で実行される。
OS 依存の短縮形
HO 以外の短縮形に UNIX 系では エクスクラメーション(!) 、Windows では ドルマーク($) を使用できる。! と $ マークの場合にはコマンドの直後のスペースは無くても良い(例:!ls 、$dir など)。しかし、プラットフォームで異なる短縮形を持つ文字はスクリプトで使用しない方がよいだろう。
(注意) HOST コマンドは SQL*Plus から新しいプロセスで実行される。
例えば host cd /tmp/hoge/ などを実行しても呼び出し元の SQL*Plus の作業ディレクトリは変化しない。
SQL*Plus から Windows のコマンドを実行する
host ($) コマンド
SQL> $ dir | sort | more
2 個のファイル 9,493 バイト
66 個のディレクトリ 3,703,697,408 バイトの空き領域
C:\oracle\product\10.2.0\db_1 のディレクトリ
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は A818-F405 です
2006/04/05 00:10 43 install.platform
2006/04/05 00:10 <DIR> admin
2006/04/05 00:10 <DIR> assistants
.....
SQL>
SQL*Plus から Linux のコマンドを実行する
host (!) コマンド
SQL> ! vi /tmp/sqlplus_test.txt
... エディタが起動
... 終了するまで、プロンプトは戻らない
... エディタを終了
SQL>
実行するコマンドをデータベースから取得する
SQL> column cmd new_value cmd_text noprint
SQL> select 'dir c:\' cmd from dual;
SQL> host &cmd_text
ドライブ C のボリューム ラベルがありません。
.....
SQL> $ &cmd_text -- UNIX 系の ! では未確認
ドライブ C のボリューム ラベルがありません。
.....