概要:このチュートリアルでは、PL/SQL 匿名ブロックについて、および SQL*Plus と SQL Developer ツールを使用してそれを実行する方法について学習します。
PL/SQL 匿名ブロック概要
PL/SQL はブロック構造化言語で、コードはブロックごとに整理されています。 PL/SQLブロックは、宣言部、実行部、および例外処理部の3つのセクションから構成されます。 ブロックの中で、実行可能セクションは必須であり、宣言セクションと例外処理セクションはオプションである。 FunctionsまたはProceduresは名前付きブロックの一例です。 名前付きブロックはOracle Databaseサーバーに保存され、後で再利用できます。
名前のないブロックは匿名ブロックです。 匿名ブロックは、Oracle Database サーバーに保存されないので、一度だけ使用するためのものです。 しかし、PL/SQL 匿名ブロックはテスト目的で有用である。
1)宣言セクション
PL/SQL ブロックには、変数の宣言、カーソル用のメモリ割り当て、データ型定義を行う宣言セクションがある。
2) 実行可能セクション
PL/SQLブロックには、実行可能セクションがあります。 実行可能セクションは、キーワードBEGIN
で始まり、キーワードEND
で終わります。 実行可能セクションは、それが何もしないNULL
文であっても、少なくとも1つの実行可能文を持たなければならない。
3) 例外処理セクション
PL/SQLブロックは、キーワードEXCEPTION
で始まる例外処理セクションを持つ。
PL/SQL匿名ブロックの例
次の例は、1つの実行可能セクションを持つ単純なPL/SQL匿名ブロックを示しています。
実行可能セクションは、DMBS_OUTPUT.PUT_LINE
プロシージャを呼び出して "Hello World"
メッセージを画面に表示します。
SQL*Plusを使用してPL/SQL匿名ブロックを実行
匿名ブロックのコードを取得したら、SQL*Plus(Oracle Databaseが提供するSQL文およびPL/SQLブロックの実行用コマンドラインインターフェース)を使用してそれを実行することができます。
次の図は、SQL*Plus を使用して PL/SQL ブロックを実行する方法を示しています。
最初に、ユーザー名とパスワードを使って Oracle Database サーバーに接続します。
次に、SET SERVEROUTPUT ON
コマンドを使用してサーバー出力をオンにし、DBMS_OUTPUT.PUT_LINE
プロシージャが画面にテキストを表示するようにします。
3番目に、ブロックのコードを入力して、SQL*Plusにブロックの実行を指示するフォワードスラッシュ ( /
) を入力します。 フォワードスラッシュ(/)を入力すると、SQL*Plusはブロックを実行し、図に示すように画面にHello World
メッセージを表示します。
DBMS_OUTPUT.PUT_LINE
手続きを使用してメッセージを表示するには、Oracle Databaseに接続するすべてのセッションでSET SERVEROUTPUT ON
コマンドを実行しなければならないことに留意してください。
入力したブロックを再度実行するには、ゼロからすべてを入力するのではなく、/
コマンドを使用します:
コードブロックを編集したい場合、edit
コマンドを使用します。 SQL*Plusはコードブロックをファイルに書き込み、次の図のようにテキストエディタで開きます:
あなたは次のようにファイルの内容を変更できます:
そしてファイルを保存し閉じます。 ファイルの内容はバッファに書き込まれ、再コンパイルされます。
その後、コードブロックを再度実行すると、新しいコードが使用されます:
SQL Developerを使ってPL/SQL匿名ブロック
最初に、Oracle SQL Developerを使ってOracle Databaseサーバーに接続します。
次に、PL/SQL コードを格納する C:\plsql
ディレクトリにある anonymous-block.sql
という名前の新しい SQL ファイルを作成します。
3番目に、PL/SQLコードを入力し、実行ボタンをクリックするか Ctrl-Enter キーボード ショートカットを押して、コードを実行します。
More PL/SQL anonymous block examples
この例では、最初に挨拶メッセージを保持する変数 l_message
を宣言しています。
以下はその出力です。
Hello World!
次の匿名ブロック例では、実行セクションで発生したZERO_DIVIDE
例外をキャッチしてエラーメッセージを表示する例外処理セクションを加えています。
エラーメッセージは次のとおりです:
ORA-01476: divisor is equal to zero
さて、PL/SQL 匿名ブロックを作成し、SQL*Plus および Oracle SQL Developer ツールを使用してそれらを実行する方法を理解してください。