SQL Developerで、スクリプトを書くときに良く使う構文
SQLワークシートでサポートされているSQL*Plus文
まずは、なにが使えるのか把握。
SQLワークシートには、SQL*Plusコマンドが、一部ですがサポートされています。
2.1から結構増えたようです。
リリース1.2 | リリース1.5 | リリース2.1 | リリース3.1 |
---|---|---|---|
@ | @ | @ | @ |
@@ | @@ | @@ | @@ |
/ | / | ||
acc[ept] | acc[ept] | acc[ept] | acc[ept] |
autotrace | autotrace | ||
cl[ear] | cl[ear] | clear screen | clear screen |
conn[ect] | conn[ect] | conn[ect] | conn[ect] |
def[ine] | def[ine] | def[ine] | def[ine] |
desc[ribe] | desc[ribe] | desc[ribe] | desc[ribe] |
doc[ument] | doc[ument] | doc[ument] | doc[ument] |
echo | echo | ||
errors | errors | ||
esc[ape] | esc[ape] | ||
exec[ute] | exec[ute] | exec[ute] | exec[ute] |
exit | exit | exit | exit |
feed[back] | feed[back] | ||
help | |||
ho[st] | ho[st] | ho[st] | ho[st] |
pagesize | pagesize | ||
pau[se] | pau[se] | pau[se] | pau[se] |
pro[mpt] | pro[mpt] | pro[mpt] | pro[mpt] |
quit | quit | quit | quit |
rem[ark] | rem[ark] | rem[ark] | rem[ark] |
roll[back] | roll[back] | ||
set pau[se] {ON|OFF} | set pau[se] {ON│OFF} | set pau[se] {ON|OFF} | set pau[se] {ON|OFF} |
sta[rt] | sta[rt] | sta[rt] | sta[rt] |
spo[ol] | spo[ol] | ||
term[out] | term[out] | ||
timi[ng] | timi[ng] | timi[ng] | timi[ng] |
undef[ine] | undef[ine] | undef[ine] | undef[ine] |
user | user | ||
var[iable] | var[iable] | ||
ver[ify] | ver[ify] | ||
whenever | whenever | whenever | whenever |
xquery | xquery | xquery | xquery |
使用例
つぎの構文を、スクリプトの最初で、良く使っています。
CLEAR SCREEN; WHENEVER SQLERROR EXIT ROLLBACK; SET SERVEROUTPUT ON SIZE 2000;
- CLEAR SCREEN
- スクリプト出力の内容をクリアしてくれます。[F5]でスクリプト実行時、いちいち、「クリア」ボタンをクリックしなくても、最新の結果のみが表示されるようになります。
- WHENEVER SQLERROR EXIT ROLLBACK
- こけた時にロールバック。ちなみに、メニューの「ツール」-「プリファレンス」-「ワークシート」-「SQLワークシートで自動コミット」のチェックは、はずしておいた方が、無難かと。
- SET SERVEROUTPUT
- DBMS_OUTPUT.PUT_LINE を使用する場合は、ONにしないと出力してくれません。
プロシージャやファンクションを実行する場合、実行したいファンクションなどを右クリックし「実行」を選択すると、「PL/SQLブロック」が表示されるので、その内容を全てコピーして、SQLワークシートに貼り付けると、次のような感じになります。
CLEAR SCREEN; WHENEVER SQLERROR EXIT ROLLBACK; SET SERVEROUTPUT ON SIZE 2000; DECLARE INPRM1 NUMBER; INPRM2 CHAR(3); OUTPRM1 VARCHAR2(2000); v_Return NUMBER; BEGIN INPRM1 := 12345; INPRM2 := 'AAA'; v_Return := FNC_HOGE( INPRM1 => INPRM1, INPRM2 => INPRM2, OUTPRM1 => OUTPRM1 ); DBMS_OUTPUT.PUT_LINE('OUTPRM1 = ' || OUTPRM1); DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return); END;