接続と切断 🔗
データベースへの接続、ユーザーの切り替え、切断を行います。
コマンド | 説明 | 書式例 |
---|---|---|
CONNECT / CONN |
指定したユーザーでデータベースに接続します。 |
OS認証:
|
DISCONNECT / DISC |
データベースから切断します。 |
|
PASSWORD |
現在のユーザーのパスワードを変更します。 |
|
SHOW USER |
現在接続しているユーザー名を表示します。 |
|
EXIT / QUIT |
SQL*Plusを終了します。COMMITせずに終了すると未確定のトランザクションはロールバックされます(AUTOCOMMIT設定による)。 |
コミットして終了:
ロールバックして終了:
|
SQLとSQL*Plusコマンドの実行 ⚡
SQL文やSQL*Plusコマンドを実行する方法です。
方法 | 説明 | 例 |
---|---|---|
セミコロン (; ) |
SQL文の終端にセミコロンを付けてEnterキーを押すと、SQL文が実行されます。 |
|
スラッシュ (/ ) |
SQLバッファに格納されているSQL文またはPL/SQLブロックを実行します。 |
|
RUN / R |
SQLバッファの内容を表示してから実行します。 |
|
@ / START |
指定したスクリプトファイルを実行します。 |
|
@@ |
現在実行中のスクリプトと同じディレクトリにある別のスクリプトファイルを実行します。ネストされたスクリプトで使用します。 |
|
SQLバッファの編集 📝
直前に実行した、あるいはバッファにあるSQL文を編集します。
コマンド | 説明 | 書式例 |
---|---|---|
LIST / L |
SQLバッファの内容(カレント行に*が付く)を表示します。 |
|
APPEND <text> / A <text> |
カレント行の末尾にテキストを追加します。 |
|
CHANGE /<old>/<new>/ C /<old>/<new>/ |
カレント行の最初に見つかった<old> を<new> に置換します。 |
|
INPUT / I |
カレント行の後ろに新しい行を挿入します。 |
テキストを指定して挿入:
|
DEL |
カレント行を削除します。範囲指定も可能です。 |
|
EDIT / ED |
OSのエディタ(環境変数 `_EDITOR` で定義)を起動し、SQLバッファの内容を編集します。 |
ファイル名を指定して編集:
|
コマンドファイルの操作 💾
SQLバッファの内容をファイルに保存したり、ファイルから読み込んだりします。
コマンド | 説明 | 書式例 |
---|---|---|
SAVE <filename> [CREATE|REPLACE|APPEND] |
SQLバッファの内容を指定したファイルに保存します。拡張子はデフォルトで `.sql` になります。 |
|
GET <filename> [LIST|NOLIST] |
指定したファイルの内容をSQLバッファに読み込みます。LIST (デフォルト) で読み込んだ内容を表示します。 |
|
START <filename> [引数...] @ <filename> [引数...] |
指定したスクリプトファイルを実行します。引数を渡すこともできます(スクリプト内では &1 , &2 … で参照)。 |
|
SPOOL <filename> [CREATE|REPLACE|APPEND] SPOOL OFF SPOOL OUT |
SQL*Plusの出力を指定したファイルに書き込みます (スプール)。SPOOL OFF で書き込みを終了します。SPOOL OUT はプリンタへ出力します(環境依存)。 |
|
出力の書式設定 📊
COLUMN
コマンドと SET
コマンドを使用して、クエリ結果の表示形式を調整します。
COLUMN コマンド
特定の列の表示属性を設定します。
書式オプション | 説明 | 例 |
---|---|---|
COLUMN <column_name> FORMAT <format_model> |
列の表示形式を指定します。数値 (9 , 0 , $ , . , , ), 文字列 (A<n> ) など。 |
|
COLUMN <column_name> HEADING '<heading_text>' |
列ヘッダーのテキストを指定します。改行は | を使用。 |
|
COLUMN <column_name> JUSTIFY [LEFT|CENTER|RIGHT] |
列ヘッダーとデータの表示位置揃えを指定します。デフォルトは数値:右、文字列:左。 |
|
COLUMN <column_name> WRAPPED / WORD_WRAPPED / TRUNCATED |
列幅を超えるデータの表示方法を指定します。WRAPPED :文字単位で折り返し, WORD_WRAPPED :単語単位で折り返し, TRUNCATED :切り捨て。 |
|
COLUMN <column_name> NULL '<text>' |
NULL値の場合に表示する文字列を指定します。 |
|
COLUMN <column_name> NOPRINT / PRINT |
列を表示しない (NOPRINT ) / 表示する (PRINT ) か指定します。 |
|
COLUMN <column_name> CLEAR |
指定した列の書式設定をすべてクリアします。 |
|
CLEAR COLUMNS |
すべての列の書式設定をクリアします。 |
|
SET コマンド (書式関連)
SQL*Plus環境全体の表示設定を変更します。
コマンド | 説明 | デフォルト値 | 設定例 |
---|---|---|---|
SET LINESIZE <n> |
1行に表示する最大文字数を設定します。 | 80 (環境依存) |
|
SET PAGESIZE <n> |
1ページあたりの行数を設定します。0にするとヘッダーが繰り返し表示されなくなります(ファイル出力時などに便利)。 | 14 (環境依存) |
|
SET HEADING ON|OFF |
列ヘッダーの表示/非表示を切り替えます。 | ON |
|
SET FEEDBACK ON|OFF|<n> |
“rows selected”のようなフィードバックメッセージの表示/非表示、または指定行数以上の場合のみ表示するかを設定します。 | 6 (環境依存) |
|
SET NULL <text> |
NULL値を表すデフォルトの文字列(通常は空白)を変更します。COLUMN <col> NULL が優先されます。 |
“” (空文字列) |
|
SET NUMFORMAT <format_model> |
数値列のデフォルト表示書式を設定します。COLUMN <col> FORMAT が優先されます。 |
“” (DB設定依存) |
|
SET WRAP ON|OFF |
LINESIZE を超える行を折り返すかどうか。COLUMN の設定が優先されることがあります。 |
ON |
|
SET COLSEP '<text>' |
列間の区切り文字を指定します。CSV出力などで利用できます。 | ” ” (スペース1つ) |
|
SET UNDERLINE ON|OFF|<char> |
列ヘッダーの下線の表示/非表示、または下線に使用する文字を設定します。 | ON, ‘-‘ |
|
変数の使用 💡
置換変数や定義変数を使用して、スクリプトを動的にします。
置換変数 (& / &&)
&変数名
または &&変数名
の形式でSQL文やSQL*Plusコマンド内に記述します。実行時に値の入力を求められます。&&
は同じセッション内で再度同じ変数が現れた際に再入力を求めません(DEFINE
された状態になる)。
SELECT employee_id, first_name, last_name
FROM employees
WHERE department_id = &dept_id
ORDER BY &order_col;
-- 実行時
dept_idに値を入力してください: 60
旧1: WHERE department_id = &dept_id
新1: WHERE department_id = 60
order_colに値を入力してください: last_name
旧2: ORDER BY &order_col
新2: ORDER BY last_name
-- && を使用
SELECT * FROM jobs WHERE job_id = '&&job_title';
-- job_title に 'IT_PROG' と入力した場合、以降の &job_title や &&job_title は 'IT_PROG' で置換される
SELECT * FROM employees WHERE job_id = '&job_title';
注意: 文字列リテラル内で使用する場合は、値をシングルクォートで囲む必要があります。
SELECT * FROM employees WHERE last_name = '&lname';
DEFINE / UNDEFINE
DEFINE
コマンドでユーザー変数(置換変数)を明示的に定義、または確認します。UNDEFINE
で削除します。
コマンド | 説明 | 書式例 |
---|---|---|
DEFINE |
定義済みの変数を一覧表示します。 |
|
DEFINE <variable> |
指定した変数の値を確認します。 |
|
DEFINE <variable> = <value> |
変数を定義し、値を割り当てます。値は文字列として扱われます。 |
|
UNDEFINE <variable> |
指定した変数を削除します。 |
|
DEFINE target_table = user_tables
SELECT table_name, num_rows FROM &target_table WHERE table_name LIKE 'EMP%';
UNDEFINE target_table
ACCEPT
ユーザーからの入力を受け付け、定義変数に格納します。
コマンド | 説明 | 書式例 |
---|---|---|
ACCEPT <variable> [NUMBER|CHAR|DATE] [FORMAT <fmt>] [DEFAULT <def>] [PROMPT '<text>'] [HIDE] |
ユーザー入力を変数に格納します。データ型、書式、デフォルト値、プロンプトメッセージ、入力非表示(パスワード用)を指定できます。 |
|
SET VERIFY / SET DEFINE
置換変数の動作を制御します。
コマンド | 説明 | デフォルト値 | 設定例 |
---|---|---|---|
SET VERIFY ON|OFF |
置換変数が値に置き換わる前後の行を表示するかどうかを設定します。 | ON |
|
SET DEFINE ON|OFF|<char> |
置換変数の機能を有効/無効にするか、置換変数の接頭辞文字を変更します。& が含まれるテキストをそのまま扱いたい場合に OFF にします。 |
ON, ‘&’ |
|
PL/SQLの実行とデバッグ支援 ⚙️
PL/SQLブロックの実行や、デバッグに役立つ機能です。
コマンド/設定 | 説明 | 使用例 |
---|---|---|
DECLARE ... BEGIN ... END; / |
無名PL/SQLブロックを記述し、/ で実行します。 |
|
SET SERVEROUTPUT ON|OFF [SIZE <n>] [FORMAT [WRAPPED|WORD_WRAPPED|TRUNCATED]] |
DBMS_OUTPUT.PUT_LINE による出力を表示するかどうかを設定します。バッファサイズや折り返し形式も指定できます。 |
|
EXECUTE <procedure_name>(...) EXEC <procedure_name>(...) |
ストアドプロシージャを実行するための短縮形です。内部的には無名PL/SQLブロックに変換されます。 |
|
VARIABLE / VAR |
バインド変数を宣言します。PL/SQLブロックの内外で値を共有するのに使います。 |
REFCURSORの宣言:
|
PRINT <variable> |
VARIABLE コマンドで宣言したバインド変数の現在値を表示します。特にREFCURSORの結果表示に便利です。 |
|
SHOW ERRORS [FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY|TRIGGER|VIEW|TYPE|TYPE BODY] [<schema>.]<name> |
直前のコンパイルエラー、または指定したオブジェクトのコンパイルエラーを表示します。 |
|
環境設定 (その他のSETコマンド) 🛠️
SQL*Plusの動作を制御する様々な SET
コマンドがあります。
コマンド | 説明 | デフォルト値 | 設定例 |
---|---|---|---|
SET AUTOCOMMIT ON|OFF|IMMEDIATE|<n> |
DML文の自動コミットを設定します。ON /IMMEDIATE は各SQL実行後、<n> はn個のDML実行後にコミット。通常はOFF 推奨。 |
OFF |
|
SET TIMING ON|OFF |
各SQL文の実行時間を表示します。パフォーマンス測定に役立ちます。 | OFF |
|
SET ECHO ON|OFF |
スクリプトファイル内のコマンドを画面に表示するかどうかを設定します。デバッグ時にON にします。 |
OFF |
|
SET TERMOUT ON|OFF |
スクリプトの実行結果を画面に表示するかどうか。スプールファイルのみに出力したい場合にOFF にします。 |
ON |
|
SET SCAN ON|OFF |
置換変数のスキャンを有効/無効にします。SET DEFINE と似ていますが、DEFINE は接頭辞文字の変更も可能です。 |
ON |
|
SET SQLBLANKLINES ON|OFF |
SQL文の中に空行を含めることを許可するかどうか。デフォルト(OFF)では空行があるとコマンドが終了したとみなされることがあります。 | OFF |
|
SET SQLPROMPT "<prompt_text>" |
SQL*Plusのプロンプト文字列を変更します。_USER , _CONNECT_IDENTIFIER などの置換も利用可能です。 |
“SQL> “ |
|
SET EDITFILE <filename> |
EDIT コマンドで使用されるデフォルトの作業ファイル名を指定します。デフォルトは afiedt.buf 。 |
afiedt.buf |
|
SHOW <option> / SHOW ALL |
特定のSETコマンドの設定値、またはすべての設定値を表示します。 | N/A |
|
オブジェクト情報の表示 🔍
DESCRIBE
コマンドでテーブルやビューなどのオブジェクト構造を表示します。
コマンド | 説明 | 書式例 |
---|---|---|
DESCRIBE <object_name> DESC <object_name> |
指定したテーブル、ビュー、シノニム、ファンクション、プロシージャなどの定義を表示します。 |
|
エラー処理 ⚠️
スクリプト実行中のSQLエラーやOSエラー発生時の動作を定義します。
コマンド | 説明 | 書式例 |
---|---|---|
WHENEVER SQLERROR EXIT [SUCCESS|FAILURE|WARNING|<n>|SQL.SQLCODE|SQL.USERCODE] [COMMIT|ROLLBACK] WHENEVER SQLERROR CONTINUE [COMMIT|ROLLBACK|NONE] |
SQLエラーが発生した場合の動作を指定します。EXIT でSQL*Plusを終了、CONTINUE で続行します。終了コードや、終了前のCOMMIT/ROLLBACKを指定できます。 |
|
WHENEVER OSERROR EXIT [SUCCESS|FAILURE|WARNING|<n>] [COMMIT|ROLLBACK] WHENEVER OSERROR CONTINUE [COMMIT|ROLLBACK|NONE] |
OSエラー(ファイル書き込み失敗など)が発生した場合の動作を指定します。WHENEVER SQLERROR と同様のオプションがあります。 |
|
注意: これらの設定はスクリプト内でのみ有効で、インタラクティブモードには影響しません。
その他の便利なコマンド ✨
コマンド | 説明 | 書式例 |
---|---|---|
PROMPT [<message>] |
画面にメッセージを表示します。スクリプトの進行状況を示すのに便利です。 |
|
PAUSE [<message>] |
メッセージを表示し、ユーザーがEnterキーを押すまでスクリプトの実行を一時停止します。 |
|
REMARK / REM |
コメント行を示します。スクリプト内に注釈を記述します。 |
SQL標準のコメント ( |
HOST [<os_command>] / ! [<os_command>] |
SQL*Plusから一時的に抜けてOSコマンドを実行します。コマンドを指定しない場合はOSのシェルを起動します。 |
|
CLEAR BUFFER / CLEAR SQL |
SQLバッファの内容をクリアします。 |
|
CLEAR SCREEN |
SQL*Plusの画面をクリアします。 |
|
TTITLE / BTITLE |
各ページの先頭 (Top Title) または末尾 (Bottom Title) に表示するタイトルを設定します。 |
|
BREAK ON <column> [SKIP <n>|SKIP PAGE] [NODUPLICATES|DUPLICATES] |
指定した列の値が変わるタイミングで処理(改行、改ページ、重複値非表示など)を行います。レポート作成時に使用します。 |
|
COMPUTE <function> OF <column> ON <break_column> |
BREAK ON と組み合わせて、ブレーク列ごとに集計(合計、平均、件数など)を行います。 |
|
コメント