SQL*Plusとは
SQL*Plusとは、Oracleが提供するSQL操作が可能なインターフェイスユーティリティのことです。
DBA(データベース管理者)がOracleの管理に使用したり、開発者も使えたりする便利なツールです。
SQL*Plusの主な機能は、次の通りです。
- SQLコマンドおよび PL/SQLサブプログラムの入力や編集、格納、取り出し、実行
- 問合せ結果の書式設定や計算実行、格納、スプール、印刷、Web表示
- 表の列定義のリスト表示
- データベース間のデータアクセス、データのコピー
- データベースの管理(起動、停止、各種DDLの実行)
- キャラクタベースの簡易レポート作成機能
無料で使いやすく便利なデータベースツールはありますが、本家Oracleが提供するSQL*Plusは押さえておくべき基本ツールです。
SQL*Plusの使い方
では、SQL*Plusの使い方をみていきましょう。
ここでは、Windowsでの使い方を簡単に解説します。
SQL*Plusを起動する
SQL*Plusを起動するには、コマンド・プロンプトから「sqlplus」を入力する必要があります。
まずは、コマンド・プロンプトを起動しましょう!
スタートボタンから「コマンド・プロンプト」を検索するか、「すべてのプログラム > アクセサリ > コマンド・プロンプト」で起動しましょう。
引数なしでSQL*Plusを起動するのであれば、コマンド・プロンプトに「sqlplus」と入力します。
Windowsをはじめとする一部のオペレーティングシステムでは、大文字小文字の区別がないので「SQLPLUS」と入力してもOKです。
ユーザー名とパスワード付きでSQL*Plusを起動する際には、sqlplusの後ろに半角スペースを空け、ユーザー名とパスワードを入力します。
そして、ユーザー名とパスワードの間にはスラッシュ(/)を入れます。
sqlplus {ユーザーID}/{パスワード}
また、ログオンをSQL*Plusの内部から行う際は、「/nolog」という引数を使います。
sqlplus /nolog
SQL*Plusを終了する
SQL*Plusを終了するには、 “SQL>”のコマンド・プロンプトから「exit」を入力すれば基本的にOKです。
終了のさせ方もいくつか種類があるので、見ていきましょう。
exitの後に「rollback」を指定すると、現行トランザクションをロールバックして終了できます。
exit rollback
また、SQL*Plusを終了しないでユーザー接続だけをログオフしたい場合には「disconnect」が使用可能です。
disconnect
SQL*Plusコマンド一覧
SQL*Plusには、独自のコマンドが多く存在します。
ここでは、SQL*Plusコマンドと内容、使用例を表にしてまとめました。
SQL*Plusコマンド | コマンド説明 | 使用例 |
---|---|---|
@(アットマーク) | 指定したスクリプトのSQL*Plus文を実行 | @PRINTRPT @WKRPT.QRY |
@@(二重アットマーク) | 指定したスクリプトのSQL*Plus文を実行 ネストしたスクリプトを実行する場合に便利なコマンド |
@@PRINTRPT @@WKRPT.QRY |
@?(アットマーク・クエスチョン) | 指定したスクリプトのSQL*Plus文を実行 | @?PRINTRPT @?WKRPT.QRY |
n | カレント行をnにする | n |
/(スラッシュ) | 最後に実行されたSQLコマンドか、SQLバッファに格納されているPL/SQLサブプログラムを実行 | / |
ACCEPT | 任意でメッセージを表示し、ユーザーからの入力を、所定の置換変数に格納 | ACCEPT USER_PASS A8 – CHAR PROMPT ‘Password: ‘ HIDE |
APPEND | 行末にテキストを追加 | APPEND ADDTEXT |
ARCHIVE LOG | アーカイブログに関する情報を表示 | ARCHIVE LOG LIST |
ATTRIBUTE | オブジェクト型列の表示特性を設定 | ATTRIBUTE MEMBER_TYPE. FIRST_NAME FORMAT A10 |
BREAK | レポート内での変更位置や実行する書式設定を指定 | BREAK |
BTITLE | 指定のタイトルの書式設定を指定 | BTITLE LEFT ‘SAMPLE TITLE’ |
CHANGE | SQLバッファの最初に一致した文字列を変更 | CHANGE /CHANGE_BEFORE /CHANGE_AFTER/ |
CLEAR | 画面やバッファ、書式、タイマーの設定などをリセットまたは消去 | CLEAR SCREEN CL SCR(短縮形) |
COLUMN | 特定列の表示設定を指定 | COLUMN TYPE_NAME FORMAT A30 |
COMPUTE | 各種の標準計算方法を使用し、サマリー行を計算して出力 | COMPUTE SUM LABEL ‘SCORE’ OF SALARY ON USER_ID; |
CONNECT | 指定したユーザー名でデータベースへ接続 | CONNECT user/user_pass |
COPY | 下位互換用/廃止される予定 | – |
DEFINE | ユーザー変数または定義定数の設定と表示 | DEFINE ID = USER_NAME |
DEL | SQLバッファの行を削除 | DEL |
DESCRIBE | 指定したファンクションまたはプロシージャの仕様を表示 | DESCRIBE employee_list |
DISCONNECT | データベースから切断 | DISCONNECT |
EDIT | ホストのエディタを起動し編集 | EDIT go ED go(短縮形) |
EXECUTE | PL/SQLサブプログラムを実行 | EXECUTE dbms_output. put_line(‘プロシージャ実行’) |
EXIT | SQL*Plusを終了 | EXIT |
GET | ファイルの内容をSQLバッファにロード | GET TYPERPT |
HELP | ヘルプを表示 | HELP SQLPLUS |
HOST | シェルでコマンドの実行 | HOST dir *.sql |
INPUT | 文字列の追加指定 | INPUT ORDER BY USER_ID |
LIST | SQLバッファを表示 | LIST |
PASSWORD | パスワードの変更 | PASSWORD |
PAUSE | 処理を一時停止 | PAUSE STOP |
バインド変数を出力 | PRINT :text | |
PROMPT | メッセージの表示 | PROMPT MESSAGE |
RECOVER | データベースのリカバリー | RECOVER DATABASE |
REMARK | コメント行 | REMAR COMMENT |
REPFOOTER | フッターの書式設定/現行のREPFOOTER定義を表示 | REPFOOTER PAGE CENTER ‘FOOTER’ |
REPHEADER | ヘッダー の書式設定/現行のREPHEADER定義を表示 | REPHEADER PAGE CENTER ‘HEADER’ |
QUIT | SQL*Plusを終了 EXITと同一 |
QUIT |
RUN | SQLバッファの内容を表示後に実行 | RUN |
SAVE | SQLバッファの内容をスクリプトに保存 | SAVE tmp |
SET | システム変数を設定 | SET DEFINE |
SHOW | 現行のSQL*Plus環境や値を表示 | SHOW REL |
SHUTDOWN | Oracle Databaseインスタンスを停止 | SHUTDOWN |
SPOOL | 出力結果をファイルへ格納 | SPOOL OFF |
START | SQL*Plus文を実行 | START file_name.ext |
STARTUP | Oracle Databaseインスタンスを起動 | STARTUP |
STORE | SQL*Plus環境の属性をスクリプトに保存 | STORE SET DEFAULTENV |
TIMING | タイマーの設定や表示 | TIMING SHOW |
TTITLE | テキストの配置および書式設定 | TTITLE CENTER ‘TITLE TEXT ‘ |
UNDEFINE | ユーザー定義定数の削除 | UNDEFINE USER_ID |
VARIABLE | PL/SQLで参照できるバインド変数を定義 | VARIABLE SCORE NUMBER |
WHENEVER OSERROR | OSレベルのエラー発生時の例外処理 | WHENEVER OSERROR EXIT SUCCESS COMMIT |
WHENEVER SQLERROR | SQLレベルのエラー発生時の例外処理 | WHENEVER SQLERROR EXIT SUCCESS COMMIT |
より詳しい説明や使い方は、次のサイトを確認するといいですよ。
SQL*Plusコマンドでヘルプを表示
SQL*Plusコマンドでヘルプを確認したい場合は、「HELPコマンド」を使いましょう。
HELPコマンドは「SQL*Plusコマンド一覧」にもあるように、HELPの後に確認したいコマンドを入力します。
HELP COMPUTE
HELPコマンド自体を忘れてしまうと他のコマンドの仕様を確認できないので、「困った時はHELPコマンドを使う」と覚えておきましょう。
エラー発生時のSQL*Plusの動作を変更する方法
OSレベルもしくはSQLレベルんのエラーが発生すると、SQL*Plusは終了します。
このようなエラー発生時の例外処理は「WHENEVER」で変更可能です。
「SQL*Plusコマンド一覧」でも使用例を紹介しましたが、ここではもう少し詳しく解説します。
WHENEVERは次のように入力しましょう。
WHENEVER {OSERROR | SQLERROR} EXIT code [COMMIT | ROLLBACK] WHENEVER {OSERROR | SQLERROR} CONTINUE [COMMIT | ROLLBACK | NONE]
OSレベルのエラー時は「OSERROR」を、SQLレベルのエラー時は「SQLERROR」を使用します。
それ以降の「EXIT」や「COMMIT」などは、それぞれ次の意味をもちます。
- EXIT:SQL*Plusを終了
- CONTINUE:SQL*Plusの処理を継続
- COMMIT:SQL*Plusを終了もしくは継続前に、トランザクションをコミット
- ROLLBACK:SQL*Plusを終了もしくは継続前に、トランザクションをロールバック
- NONE:SQL*Plusを継続させるとき、トランザクションのコミットおよびロールバックをしない
まとめ
SQL*Plusのコマンドについてまとめました。
SQL*Plusは、DBAも開発者も使える便利なツールです。
独自のコマンドも多数ありますが、必要に応じて調べて使えばOKです。
ぜひこの記事を参考にSQL*Plusのコマンドを使いこなしてください。