Oracle SQL*Plus使用方法

SQL*Plusã¨ã¯ï¼Ÿ

Oracleデータベースã«ãŠã‘ã‚‹SQLを実行ã™ã‚‹ãŸã‚ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆç”¨CUIツール
データベース接続/切断ã€SQLコマンドを実行å¯èƒ½

インストール

å…¬å¼ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚µã‚¤ãƒˆ
Windows(32bit/64bit)ã€Linuxç­‰ã®å„実行環境ã«å¿œã˜ãŸãƒ•ァイルをダウンロードã™ã‚‹
instantclient

インスタントクライアント

ORACLEãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã™ã‚‹ãŸã‚ã®ãƒ©ã‚¤ãƒ–ラリ
・ instantclient-Basic~
・ instantclient-Basiclite~
をダウンロードã—ã¦åŒä¸€ãƒ•ォルダã¸ã¾ã¨ã‚ã‚‹
æŽ¥ç¶šä»¥å¤–ã®æ©Ÿèƒ½ãŒç„¡ãã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’æ“作ã™ã‚‹ç‚ºã«ã¯åˆ¥é€”SQL*Plusç­‰ãŒå¿…è¦ã€‚
・ instantclient-sqlplus~
をダウンロードã—ã¦ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ãƒˆã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã¨åŒä¸€ãƒ•ォルダã¸ã¾ã¨ã‚ã‚‹

SQL*Plusコマンド

一覧

コマンド 説明
SQLPLUS SQLPLUSèµ·å‹•
CONNECT 接続
@ 外部スクリプト
SHOW ERRORS エラー表示
SHOW PARAMETER SPFILE SPFileã®è¡¨ç¤º
DESCRIBE (表å) テーブル定義出力
PROMPT (文字列) 文字列ログ出力
STARTUP インスタンスã®èµ·å‹•~MOUNTã€OPENã¾ã§å…¨ã¦å®Ÿè¡Œ
SHUTDOWN 「切断ã€å‚ç…§

接続

ログイン対象サーãƒãƒ¼ コマンド 次コマンド æ„味
ローカル sqlplus ユーザーå? èµ·å‹•
ローカル sqlplus as sysdba ユーザーå? èµ·å‹•(権é™ä»˜ã)
ローカル sqlplus /nolog connect (ユーザーå) 起動&ログイン無ã—
ローカル sqlplus ユーザーå パスワード? 起動&ユーザ指定ログイン
ローカル sqlplus ユーザーå/パスワード 起動&ユーザ・パス指定ログイン
外部 sqlplus / ユーザå? 起動&外部サーãƒãƒ­ã‚°ã‚¤ãƒ³æƒ…報入力ã¸
外部 sqlplus / as sysdba ユーザå? èµ·å‹•(権é™ä»˜ã)&外部サーãƒãƒ­ã‚°ã‚¤ãƒ³æƒ…報入力ã¸
外部 sqlplus ユーザーå/パスワード@ホスト:ãƒãƒ¼ãƒˆç•ªå·/サービスå 起動&ユーザ他指定ã€ãƒ­ã‚°ã‚¤ãƒ³

powershell/コマンドプロンプトã‹ã‚‰
> sqlplus (ユーザå)/(パスワード)
> sqlplus system/*******
> sqlplus (ユーザå)/(パスワード)@(ホストå)[:(ãƒãƒ¼ãƒˆç•ªå·)]/(サービスå)
> sqlplus system/*******@host:100/service

çµæžœ ↓
SQL>
sqlplus.exeã‹ã‚‰
ユーザーåを入力ã—ã¦ãã ã•ã„:system
パスワードを入力ã—ã¦ãã ã•ã„:*******
Oracle Database 11g ~ ã«æŽ¥ç¶šã•れã¾ã—ãŸã€‚
SQL>

切断

SQL> SHUTDOWN;
SQL> SHUTDOWN オプション;

オプション トランザクション セッション 備考
NORMAL 完了ã¾ã§å¾…機 終了ã¾ã§å¾…機 è¦å®š
TRANSACTIONAL 完了ã¾ã§å¾…機 強制切断
IMMEDIATE ロールãƒãƒƒã‚¯ 強制切断
ABORT 無視 強制切断 通常ã®çµ‚了ãŒã§ããªã„å ´åˆç”¨
(メディア障害時等)
インスタンスリカãƒãƒªãŒå®Ÿè¡Œã•れる

ã€Œãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹èµ·å‹•ã®æµã‚Œã€å‚ç…§

OSコマンド実行

先頭ã«ã€ŒHOSTã€ã¾ãŸã¯ã€Œ!ã€ã‚’付ã‘ã‚‹
HOST ls
HOST cd ~
!ls
!cd ~

外部スクリプト

実行

・ 実行ã™ã‚‹SQL命令ãŒå¤§é‡ã«ã‚ã‚‹å ´åˆ
・ 実行ã™ã‚‹SQL命令ãŒé•·ã„å ´åˆ(Create文等)
ç­‰ã®å ´åˆã«SQLæ–‡ãŒè¨˜è¿°ã•れãŸãƒ†ã‚­ã‚¹ãƒˆãƒ•ァイルをSQL*Plusã‹ã‚‰å®Ÿè¡Œã§ãる。
実行
SQL> @(ファイルå)
SQLPLUS実行・接続ã¨åŒæ™‚ã«ã‚¹ã‚¯ãƒªãƒ—ト実行
SQLPLUS (接続情報) @(ファイルå)

例
※test.sql
Create ~;

※SQL*Plus
SQL> @C:\~\test.sql
→ Create ~ ãŒå®Ÿè¡Œã•れる

パラメータ

外部スクリプトã«å¤‰æ•°ã‚’渡ã™å ´åˆ
> SQLPLUS (接続情報);
VAR 変数1 型;
VAR 変数2 型;
BEGIN
 : 変数1 := 値
 : 変数2 := 値
END;
SQL> @(ファイルå) 変数1 変数2 10

※(ファイルå)
SELECT * FROM (表)
WHERE
 (列1) = &1 AND â†å¤‰æ•°1
 (列2) = ''&2'' AND â†å¤‰æ•°2
 文字列ã¨ã—ã¦æ‰±ã†å ´åˆã¯''(シングルコーテーション×2)ã§å›²ã‚€
 (列3) = &3 â†10
;

戻り値

ã€ä¾‹å¤–をキャッãƒã—ã¦æˆ»ã‚Šå€¤ã‚’設定】
VAR RETURN_CODE NUMBER;
BEGIN
 :RETURN_CODE = 0;
 ~
EXCEPTION
 WHEN SQLERROR THEN
  :RETURN_CODE = SQL.SQLCODE;
 WHEN OTHERS THEN
  :RETURN_CODE = 9;
END;
/
EXIT :RETURN_CODE

ã€ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿæ™‚ã«è‡ªå‹•ã§æˆ»ã‚Šå€¤ã‚’è¿”ã™å ´åˆã€‘
WEHNEVER SQLERROR EXIT N
WEHNEVER SQLERROR EXIT SQL.SQLCODE
WEHNEVER OSERROR EXIT N
BEGIN
 ~
END;
/

ã€æˆ»ã‚Šå€¤ã®æ ¼ç´å…ˆã€‘

種類 組込変数
Windowsãƒãƒƒãƒ %errorlevel%
シェルスクリプト sh系(bsh, ksh, bash) $? 変数
csh系(csh, tch) $status 変数

変数定義

・置æ›å¤‰æ•°
SQL*Plusã«ã‚ˆã‚‹ç½®æ›æ©Ÿèƒ½
・ãƒã‚¤ãƒ³ãƒ‰å¤‰æ•°
SQL*Plusã«ã‚ˆã‚‹ãƒã‚¤ãƒ³ãƒ‰æ©Ÿèƒ½ã€‚
PL/SQL内ã§å®šç¾©ã™ã‚‹äº‹ã¯ã§ããªã„ãŒã€SQL*Plusã§å®šç¾©ã—ãŸå¤‰æ•°ã‚’PL/SQLã«å¯¾ã—ã¦ä½¿ç”¨ã™ã‚‹äº‹ãŒã§ãる。
PL/SQL内ã§å®šç¾©ã™ã‚‹å¤‰æ•°ã¨é•ã„ã€PL/SQLブロックãŒçµ‚了ã—ãŸå¾Œã‚‚値ãŒä¿æŒã•れる。

ç½®æ›å¤‰æ•°

DEFINE 変数å=~;
SQL文: ~ = &変数å;
※変数åã¯å¤§æ–‡å­—/å°æ–‡å­—ãŒåŒºåˆ¥ã•れãªã„。
&AAAã¨&aaaã¯åŒã˜å¤‰æ•°æ‰±ã„

DEFINE value = 1;
SELECT ~ FROM ~ WHERE ~ = &value;
スクリプトã®å®Ÿè¡Œçµæžœ
SELECT ~ FROM ~ WHERE ~ = &value
↓
SELECT ~ FROM ~ WHERE ~ = 1
ç½®æ›å¤‰æ•°ã¸å€¤ãŒç½®æ›ã•れる

定義削除
UNDEFINE 変数å;
定義削除ã—ãªã„å ´åˆã€SQL*Plusを終了ã™ã‚‹ã¾ã§å®šç¾©ã¯æœ‰åй

DEFINEç„¡ã—ã§ç½®æ›å¤‰æ•°ã‚’使用ã—ãŸå ´åˆ
SELECT ~ FROM ~ WHERE ~ = &value
↓
ユーザーã«ã‚­ãƒ¼å…¥åŠ›ã‚’æ±‚ã‚ã‚‹

ユーザー入力値を引ãç¶šã使用ã™ã‚‹å ´åˆ
入力時:&&ç½®æ›å¤‰æ•°å
SELECT ~ FROM ~ WHERE ~ = &&value; –â‘ 
SELECT ~ FROM ~ WHERE ~ = &&value; –â‘¡
を実行ã™ã‚‹å ´åˆ
ユーザーキー入力
↓
入力ã•れãŸå€¤ã§ç½®æ›å¤‰æ•°ã‚’ç½®æ›ï¼†SQL文①を実行
入力ã•れãŸå€¤ã§ç½®æ›å¤‰æ•°ã‚’ç½®æ›ï¼†SQL文②を実行
&&~ã¯ä»¥ä¸‹ã®2ã¤ã®æ©Ÿèƒ½ã‚’æŒã¤
・DEFINEã«ã‚ˆã‚‹å¤‰æ•°å®šç¾©
・&~ã«ã‚ˆã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼å…¥åЛ値ã®ç½®æ›

ãƒã‚¤ãƒ³ãƒ‰å¤‰æ•°

SQL*Plus実行中ã€ãƒ›ã‚¹ãƒˆã‚³ãƒ³ãƒ”ュータã®ãƒ¡ãƒ¢ãƒªé ˜åŸŸã«ä¿æŒã•れる変数
PL/SQL外ã§å®šç¾©ã™ã‚‹å¤‰æ•°ã€‚
PL/SQL外ã§ä½¿ç”¨ã™ã‚‹ä»–ã€
PL/SQLã¸å€¤ã‚’渡ã—ãŸã‚Šã€å—ã‘å–ã£ãŸã‚Šã§ãる。
使用例
ãƒã‚¤ãƒ³ãƒ‰å¤‰æ•°å®šç¾©
EXECUTE ストアドå(:ãƒã‚¤ãƒ³ãƒ‰å¤‰æ•°)
SELECT ~ FROM ~ WHERE ~ = :ãƒã‚¤ãƒ³ãƒ‰å¤‰æ•°

VARIABLE 変数å åž‹; --ãƒã‚¤ãƒ³ãƒ‰å¤‰æ•°å®šç¾©
VAR 変数å åž‹;
変数定義ã¯PL/SQL外ã®ã¿
BEGIN
 : 変数å := 値
 値ã®è¨­å®šã¯PL/SQL内ã®ã¿
END;
/
SELECT ~ WHERE ~ = : 変数å;
EXECUTE ストアド(: 変数å);
/

VAR TEST NUMBER;
:NUMBER = 5; â†ã‚¨ãƒ©ãƒ¼
BEGIN
 VAR TEST NUMBER; â†ã‚¨ãƒ©ãƒ¼
 :NUMBER = 5;
END

PRINT :ãƒã‚¤ãƒ³ãƒ‰å¤‰æ•°å;
ãƒã‚¤ãƒ³ãƒ‰å¤‰æ•°ã®ä¸­èº«ã‚’出力
PRINT;
ãƒã‚¤ãƒ³ãƒ‰å¤‰æ•°ä¸€è¦§ã‚’出力

ログ出力

SQL> spool sql.log
SQL> (SQL命令)
SQL> spool off
→ SQLPlusã®å®Ÿè¡Œãƒ•ァイル場所ã«sql.logãŒä½œæˆã•れã€
・ 実行日時
・ SQL文
・ エラー情報
ãŒå‡ºåŠ›ã•れる。

制御文

PL/SQLã§ã®åˆ¶å¾¡æ–‡ã«ã¤ã„ã¦ã¯ã€ŒSQL DML:制御文ã€å‚ç…§

å®Ÿè¡Œçµæžœè¨­å®š(SET~)

一覧

SQL*Plusコマンド 機能 デフォルト
SET AUTOCOMMIT DML文実行時ã«è‡ªå‹•COMMIT OFF
SET DEFINE OFF ç½®æ›å¤‰æ•°åˆ‡ã‚Šæ›¿ãˆ ON
SET VERIFY ON ç½®æ›å‰å¾Œã®å€¤ã‚’表示 OFF
SET ECHO ON DMLå®Ÿè¡Œçµæžœã‚’表示 OFF
SET FEEDBACK ON å•ã„åˆã‚ã›çµæžœè¡Œæ•°ã‚’表示 OFF
SET HEADING OFF 列見出ã—を表示 OFF
SET TIME ON ç¾åœ¨æ™‚刻を表示 OFF
SET TIMING ON çµŒéŽæ™‚刻を表示 OFF
SET ARRAYSIZE N
SET ARRAY N
SELECTæ–‡ã«ãŠã‘る一度ã«FETCHã™ã‚‹è¡Œæ•°
推奨:500
15
SET LINESIZE N
SET LINE N
表示画é¢ã«ãŠã‘る1行当ãŸã‚Šæ–‡å­—列数
æŽ¨å¥¨ï¼šãƒ¬ã‚³ãƒ¼ãƒ‰ã®æœ€å¤§ãƒã‚¤ãƒˆæ•°Ã—1.5
80
SET TRIMSPOOL ON
SET TRIMS ON
SPOOL処ç†ã®æœ«å°¾ã®ç©ºç™½ã‚¹ãƒšãƒ¼ã‚¹ã‚’TRIM OFF
ALTER SESSION
SET nls_date_format
= 'DD-MON-RR'
日付書å¼è¨­å®š 'RR-MM-DD'
ALTER SESSION
SET nls_date_language
= 'AMERICAN'
日付言語設定 'JAPANESE'

ç½®æ›å¤‰æ•°åˆ‡ã‚Šæ›¿ãˆ

SET DEFINE ON
SET DEFINE OFF
定義ã—ãŸå¤‰æ•°ã‚’クエリー内ã«åŸ‹ã‚込む機能ã®ON/OFF
デフォルトã§ã¯ONã§ã€ã‹ã¤ã€Œ&ã€ãŒç½®æ›å‘½ä»¤
SET DEFINE ON ï¼ SET DEFINE &
よã£ã¦ã‚¯ã‚¨ãƒªãƒ¼å†…ã«&ãŒã‚ã‚‹ã¨å¤‰æ•°ã®ç½®æ›ãŒå®Ÿè¡Œã•れã€ã‚­ãƒ¼å…¥åŠ›ã‚’æ±‚ã‚られãŸã‚Šã™ã‚‹ã€‚
SET DEFINE OFF;
ã§è§£æ±ºã€‚
「Oracle SQL Developer使用方法 ç½®æ›å¤‰æ•°ã€å‚ç…§

Follow me!