2.3 SQLワークシートの使用
SQLワークシートを使用すると、SQL、PL/SQLおよびSQLcl文を入力して実行できます。表の作成、データの挿入、トリガーの作成と編集、表からのデータの選択、表から選択したデータのファイルへの保存など、ワークシートに関連付けられたデータベース接続によって処理可能なすべてのアクションを指定できます。
SQLワークシートを表示するには、「接続」パネルで接続名を右クリックして「SQLワークシートを開く」を選択します。
SQLワークシートが開いているときに、既存のSQLファイルも開いている場合は、右下隅にある接続アイコンをクリックして接続を添付できます。接続がエディタまたはファイルに関連付けられると、接続の名前が右下隅に表示されます。
エディタでは、実行する1つ以上のSQLまたは文を入力できます。複数の文の場合、PL/SQL以外の各文は、セミコロンまたは(改行後の)スラッシュ(/)のいずれかで終了する必要があります。各PL/SQL文は、改行後にスラッシュ(/)で終了する必要があります。SQLキーワードは、自動的にハイライト表示されます。
表やビューなど、いくつかの種類のオブジェクトは、「接続」ナビゲータからドラッグし、エディタ・ペインにドロップできます。このとき、「オブジェクト名」、「選択」、「挿入」、「削除」、「更新」というオプションが表示されます。SELECTを選択すると、その表またはビューのすべての列を使用して、SELECT文が作成されます。その後、列リストの変更やWHERE句の追加などによって、文を編集できます。
[Ctrl]+[Space]を押すと、コンテキスト依存のポップアップ・ウィンドウが表示されます。これにより、挿入ポイントで補完可能な構文のリストが表示されます。これは、編集中のコードを自動補完するために使用できます。このリストは、挿入ポイントでのコードのコンテキストに基づきます。いつでも終了するには、[Esc]を押すか、入力を続行します。
SQLワークシートの右上隅には、次のアイコンがあります。
-
文の実行(Ctrl+Enter): SQLワークシートのマウス・ポインタが置かれている文を実行します。SQL文には、VARCHAR2型のバインド変数および置換変数を含めることができます。変数の値を入力するためのポップアップ・ボックスが表示されます。出力は、下部ペインの「問合せ結果」タブの下に表示されます。
-
スクリプトの実行(F5)は、スクリプト・ランナーを使用してSQLワークシート内のすべての文を実行します。SQL文には、VARCHAR2型の置換変数(ただしバインド変数は除く)を含めることができます。置換変数の値を入力するためのポップアップ・ボックスが表示されます。出力は、下部ペインの「スクリプト結果」タブの下に表示されます。
-
SQLclで実行(Ctrl+Shift+Enter): SQLclコマンドライン・セッションを開き、出力を表示して、文またはスクリプトを実行します。
-
実行計画 (F10): (EXPLAIN PLAN文を内部的に実行して)文の実行計画を生成します。結果は、下部ペインの「説明」タブの下に表示されます。
2.3.1 SQLワークシートでサポートされるSQLclコマンド
SQLワークシートでは、SQLclコマンドがサポートされています。SQLclコマンドは、データベースに渡される前に、SQLワークシートで解析する必要があります。SQLワークシートでサポートされていないコマンドは無視され、データベースに渡されません。
SQLclコマンドの詳細を参照するは、helpコマンドを入力できます。特定のコマンドまたはトピックの詳細を参照するには、それをパラメータとして含めます(help @、help exit、help予約語など)。コマンドがサポートされていない場合、制限事項または使用上のノートがある場合は、ヘルプ表示にこの情報が含まれます。
2.3.2 スクリプト・ランナー
スクリプト・ランナーでは、@、@@、CONNECT、EXIT、QUIT、UNDEFINE、WHENEVER、置換変数などのコマンドにアクセスできます。たとえば、c:\myscripts\mytest.sqlというスクリプトを実行するには、エディタで@c:\myscripts\mytestと入力して、「スクリプトの実行」アイコンを選択します。
スクリプト・ランナーを使用する際の考慮事項は、次のとおりです。
-
バインド変数は使用できません。(ただし、VARCHAR2、NUMBERおよびDATE型のバインド変数は使用できます。)
-
置換変数では、&&variableという構文で永続的な変数値が割り当てられ、&variableという構文で一時的な(格納されない)変数値が割り当てられます。
-
EXITおよびQUITでは、コミットがデフォルトの動作ですが、ロールバックを指定することもできます。いずれの場合も、コンテキストはリセットされます。たとえば、WHENEVERコマンドの情報と置換変数の値はクリアされます。
-
DESCRIBEは、ほとんどのオブジェクト・タイプで機能しますが、すべてではありません。
2.3.3 実行計画
「実行計画の実行」アイコンをクリックすると生成される実行計画は、「実行計画」タブをクリックすると表示できます。実行計画とは、文を実行するために行われる一連の操作です。実行計画に表示される詳細のレベルを選択するには、「プリファレンスの使用」で適切なオプションを選択します。
実行計画には、文を構成する操作の階層を示した行ソース・ツリーが表示されます。各操作では、文が参照する表の順序、文に記述されている各表へのアクセス・メソッド、文の結合操作に影響される表の結合メソッドと、フィルタ、ソート、集計などのデータ操作が示されます。
行ソース・ツリーに加えて、計画表には、最適化(各操作のコストやカーディナリティなど)、パーティション化(アクセスされるパーティションのセットなど)およびパラレル実行(結合入力の分散メソッドなど)に関する情報が表示されます。
2.3.4 SQL履歴
右下のペインの「SQL履歴」タブをクリックすると、実行したSQL文およびスクリプトのリストを表示できます。また、1つ以上の文を選択して、現在SQLワークシートにある文を置換するか、または現在SQLワークシートにある文に追加することもできます。リストは接続名別に編成されています。
SQL履歴リストには、パスワードが含まれる可能性のある文は表示されません。CONNECT、ALTER USERおよびCREATE DATABASE LINKがこれにあたりますが、これらに限定されません。
「SQL履歴の制限」プリファレンスを設定すると、履歴内の文の最大数を制御できます。
次の図では、「SQL履歴」リストのSQL文が選択され、「SQLワークシート」ペインでPL/SQLサブプログラムが自動的に開きます。
2.3.5 スニペットを使用した部分的なコードの挿入
スニペットとは、SQLファンクション、オプティマイザ・ヒント、様々なPL/SQLプログラミング技法などが含まれる部分的なコードです。スニペットは、構文のみの場合や、例が含まれる場合もあります。SQLワークシートを使用している場合や、PL/SQLファンクションまたはプロシージャを作成したり編集している場合に、スニペットを挿入および編集できます。
スニペットが、「接続」パネルの下部に表示されます。「展開」アイコンをクリックすると、各グループで使用可能なすべてのシンペット(集計関数や文字関数など)が表示されます。ほとんどの場合、各グループの部分的なコードは、その論理グループで利用可能なすべてのオブジェクトを表しているわけではなく、それぞれの部分的なコードのすべての書式およびオプションが表示されているわけでもありません。詳細は、Oracle Databaseのマニュアルを参照してください。
SQLワークシートのコード、またはPL/SQLファンクションまたはプロシージャのコードにスニペットを挿入するには、左下ペインからスニペットをドラッグし、コードの目的の場所にドロップします。SQLファンクションが現在のコンテキストで有効になるように構文を編集します。
たとえば、SELECTと入力し、「文字関数」グループからCONCAT(char1, char2)をドラッグできます。次に、CONCATファンクションの構文を編集して、文の残りの部分を入力します。
SELECT CONCAT(title, ' is a book in the library.') FROM books;