Oracle SQL*Plus使用方法
目次
SQL*Plusã¨ã¯ï¼Ÿ
Oracleデータベースã«ãŠã‘ã‚‹SQLを実行ã™ã‚‹ãŸã‚ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆç”¨CUIツール
データベース接続/切æ–ã€SQLコマンドを実行å¯èƒ½
インストール
å…¬å¼ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã‚µã‚¤ãƒˆ
Windows(32bit/64bit)ã€Linuxç‰ã®å„実行環境ã«å¿œã˜ãŸãƒ•ァイルをダウンãƒãƒ¼ãƒ‰ã™ã‚‹
インスタントクライアント
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使用方法 ç½®æ›å¤‰æ•°ã€å‚ç…§