STARTは、SQLスクリプト(SQL文を格納したファイル)を実行するSQL*Plusコマンドである。STARTコマンドの省略形はSTA、@及び@@である。ただし、@@は動作が少し異なる。
STA[RT] {url|filename[.ext]} [arg ...]
@{url|filename[.ext]} [arg ...]
@@{url|filename[.ext]} [arg ...]
例えば、実行するSQL文を example.sql というファイルに記述してある場合、次のようにして実行することができます。
SQL> START /path/to/example
ファイルの拡張子を省略したときのデフォルト拡張子は、SET SUFFIX コマンドで変更できる。
SET SUF[FIX] {SQL | text}
SQL> START /path/to/example.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_HOME/rdbms/admin/ディレクトリ(フォルダ)に格納されている。
SQLスクリプト | 説明 |
---|---|
utlrp.sql | INVALIDオブジェクトを再コンパイルする。 |
utlrp.sqlは、INVALIDオブジェクトを再コンパイルするSQLスクリプトである。utlrp.sqlを実行するには、SYSユーザでOracleに接続する必要がある。
SQL> @?/rdbms/admin/utlrp.sql
疑問符(?
)は環境変数ORACLE_HOMEに置き換えられる。