SQL*Plus START

STARTは、SQLスクリプト(SQL文を格納したファイル)を実行するSQL*Plusコマンドである。STARTコマンドの省略形はSTA、@及び@@である。ただし、@@は動作が少し異なる。

構文

STA[RT] {url|filename[.ext]} [arg ...]
@{url|filename[.ext]} [arg ...]
@@{url|filename[.ext]} [arg ...]
filename
実行するSQLスクリプトのファイル名を指定する。ファイル名に.sqlという拡張子が付いている場合、拡張子は省略できる。

例えば、実行するSQL文を example.sql というファイルに記述してある場合、次のようにして実行することができます。

SQL> START /path/to/example

ファイルの拡張子を省略したときのデフォルト拡張子は、SET SUFFIX コマンドで変更できる。

SET SUF[FIX] {SQL | text}
ext
実行するSQLスクリプトの拡張子を指定する。
SQL> START /path/to/example.sql
arg
実行するSQLスクリプトに渡す引数を指定する。空白で区切って、複数の引数を指定できる。

スクリプト・ファイルのパラメータとして arg を指定した場合、スクリプト・ファイル内ではパラメータを置換文字 &1、&2、... として参照することができる。

@@の場合、ネストしたスクリプトを実行すると、呼び出されたスクリプトと同じパス内又はURLでネストしたスクリプトを検索する。

パラメータを&1や&2で表すことができる。たとえばパラメータを取るスクリプトは次のように記述する。

SELECT '&1' FROM DUAL

上記のスクリプトは次のようにして実行する。

SQL> @tmp.sql hello
旧    1: SELECT '&1' FROM DUAL;
新    1: SELECT 'hello' FROM DUAL;

'HELLO'
--------
hello

SQL>

Oracleにあらかじめ用意されているSQLスクリプト

Oracleデータベースには、あらかじめ用意されているSQLスクリプトがある。Oracleが提供するSQLスクリプトは、$ORACLE_HOME/rdbms/admin/ディレクトリ(フォルダ)に格納されている。

Oracleにあらかじめ用意されているSQLスクリプト
SQLスクリプト 説明
utlrp.sql INVALIDオブジェクトを再コンパイルする。

utlrp.sql

utlrp.sqlは、INVALIDオブジェクトを再コンパイルするSQLスクリプトである。utlrp.sqlを実行するには、SYSユーザでOracleに接続する必要がある。

SQL> @?/rdbms/admin/utlrp.sql

疑問符(?)は環境変数ORACLE_HOMEに置き換えられる。