スクリプトを実行する
START や @、@@ などは指定したスクリプトを実行するためのコマンド
START コマンド
START コマンドの構文
START ファイル名[.拡張子] [引数1 [ 引数2...]]
短縮形
STA ファイル名[.拡張子] [引数1 [ 引数2...]]
ファイル名には絶対パス、カレントワークディレクトリからの相対パスを含めることが可能
拡張子のデフォルトは .sql
複数の引数(パラメータ)を用いる場合にはスペース区切り
START と同じ機能をする @、@@、@? コマンド
@ コマンドは START コマンドのエイリアスとして機能する。@@、@? コマンドは @ コマンドにファイル探索パスの追加が施されている。
@ コマンド
@ コマンドの構文
@ファイル名[.拡張子] [引数1 [ 引数2...]]
アットマーク(@)とファイル名の間にスペースは記述しない。引数はスペース区切りで並べる。
SQL> @atmark.sql param1 param2 ....
SQL>
スクリプトファイルの探索順
の順序でファイルの探索が行なわれる。
@@ コマンド
@@ コマンドも @コマンドと同じ構文。
@ コマンドと異なる点はパス名を含まないファイル名の場合にのみ「呼び出し元のスクリプトのパス」が補完される。
ファイル名に相対パス(./ でも)を含むと @ コマンドと同じファイル探索方法となり
SP2-0310: ファイル"xxxx"をオープンできません。のエラーになる。(マニュアルに詳細説明がないので憶測)
つまり、@@ドット(.)/ファイル名.sql による相対パス表記を含むスクリプトの実行は
- 作業中のディレクトリ/ファイル名.sql
- SQLPATH の指定の順番/ファイル名.sql
の順序でファイルの探索のみが行なわれ 実行スクリプトのあるディレクトリ/ファイル名.sql の探索は行なわれない。
@? コマンド
@? コマンドは探索パスを $ORACLE_HOME だけにし、他(作業ディレクトリ含む)は全て無効にする。(マニュアル記載がないので憶測)
START 関連 システム変数
- SUFFIX システム変数 拡張子(.sql) の変更