PL/SQL ブロック: STRUCTURE、構文、ANONYMOUS の例

PL/SQLブロックとは何ですか?

PL/SQL では、コードは単一行形式では実行されませんが、常にコードをブロックと呼ばれる単一の要素にグループ化することによって実行されます。 このチュートリアルでは、これらのブロックについて学習します。

ブロックには、PL/SQL と SQL 命令の両方が含まれます。 これらの命令はすべて、一度に XNUMX つの命令を実行するのではなく、全体として実行されます。

ブロック構造

PL/SQL ブロックには、コードがグループ化される事前定義された構造があります。 以下に、PL/SQL ブロックのさまざまなセクションを示します。

  1. 宣言セクション
  2. 実行セクション
  3. 例外処理セクション

次の図は、さまざまな PL/SQL ブロックとそのセクションの順序を示しています。

ブロック構造

宣言セクション

これは、PL/SQL ブロックの最初のセクションです。 このセクションはオプションの部分です。 これは、ブロック内で必要な変数、カーソル、例外、サブプログラム、プラグマ命令、およびコレクションの宣言が宣言されるセクションです。 この部分の特徴をさらにいくつか以下に示します。

  • この特定のセクションはオプションであり、宣言が必要ない場合はスキップできます。
  • これは、PL/SQL ブロックが存在する場合、そのブロックの最初のセクションである必要があります。
  • このセクションは、トリガーと匿名ブロックのキーワード「DECLARE」で始まります。 他のサブプログラムの場合、このキーワードは存在しません。 代わりに、サブプログラム名定義の後の部分が宣言セクションをマークします。
  • このセクションの後には常に実行セクションが続く必要があります。

実行セクション

実行部分は、内部に記述されたコードを実際に実行する主要かつ必須の部分です。 以来、 PL / SQLの このブロックからの実行可能ステートメントを期待します。これは空のブロックであってはなりません。つまり、その中に少なくとも XNUMX つの有効な実行可能コード行が含まれている必要があります。 この部分の特徴をさらにいくつか以下に示します。

  • これには、PL/SQL コードと SQL コードの両方を含めることができます。
  • この中には、ネストされたブロックとして XNUMX つまたは複数のブロックを含めることができます。
  • このセクションはキーワード「BEGIN」で始まります。
  • このセクションの後には、「END」または例外処理セクション (存在する場合) が続く必要があります。

例外処理セクション

例外はプログラムの実行時に発生し、これを処理するために避けられません。 Oracle ブロック内に例外処理セクションが用意されています。このセクションには、PL/SQL ステートメントを含めることもできます。これは、PL/SQL ブロックのオプションのセクションです。

  • これは、実行ブロックで発生した例外が処理されるセクションです。
  • このセクションは、PL/SQL ブロックの最後の部分です。
  • このセクションからの制御は実行ブロックに戻ることはできません。
  • このセクションはキーワード「EXCEPTION」で始まります。
  • このセクションの後には常にキーワード「END」を続ける必要があります。

キーワード「END」は、PL/SQL ブロックの終わりを示します。

PL/SQLブロック構文

以下は、PL/SQL ブロック構造の構文です。

PL/SQLブロック構文

DECLARE --optional
    <declarations>

BEGIN   --mandatory
    <executable statements. At least one executable statement is mandatory>

EXCEPTION --optional 
    <exception handles>

END;   --mandatory
/

注意: ブロックの後には、ブロックの終わりに関する情報をコンパイラに送信する「/」を常に続ける必要があります。

PL/SQLブロックの種類

PL/SQL ブロックには主に XNUMX つのタイプがあります。

  1. 匿名ブロック
  2. 名前付きブロック

匿名ブロック

匿名ブロックは、名前が割り当てられていない PL/SQL ブロックです。 これらはデータベース オブジェクトとしてサーバーに保存されないため、同じセッションで作成して使用する必要があります。

データベースに保存する必要がないため、コンパイル手順は必要ありません。 これらは直接書き込まれて実行され、コンパイルと実行は XNUMX つのプロセスで行われます。

以下に、匿名ブロックの特徴をいくつか示します。

  • これらのブロックには参照名が指定されていません。
  • これらのブロックはキーワード「DECLARE」または「BEGIN」で始まります。
  • これらのブロックには参照名がないため、後で使用するために保存することはできません。同じセッションで作成および実行する必要があります。
  • 他の名前付きブロックを呼び出すことはできますが、参照がないため匿名ブロックを呼び出すことはできません。
  • 名前付きまたは匿名のネストされたブロックを含めることができます。 任意のブロックにネストすることもできます。
  • これらのブロックには、ブロックの XNUMX つのセクションすべてを含めることができます。実行セクションは必須で、他の XNUMX つのセクションはオプションです。

名前付きブロック

名前付きブロックには、特定の一意の名前が付いています。 これらはデータベース オブジェクトとしてサーバーに保存されます。 データベースオブジェクトとして利用できるため、サーバー上に存在する限り参照・利用することができます。 名前付きブロックのコンパイル プロセスは、それらをデータベース オブジェクトとして作成するときに個別に行われます。

以下に、名前付きブロックの特徴をいくつか示します。

  • これらのブロックは他のブロックから呼び出すことができます。
  • ブロック構造は匿名ブロックと同じですが、キーワード「DECLARE」で始まらない点が異なります。 代わりに、データベース オブジェクトとして作成するようにコンパイラに指示するキーワード「CREATE」で始まります。
  • これらのブロックは、他のブロック内にネストできます。 ネストされたブロックを含めることもできます。
  • 名前付きブロックには基本的に次の XNUMX つのタイプがあります。
  1. 手順
  2. 演算

これらの名前付きブロックについては、後のチュートリアルの「手順」と「関数」のトピックで詳しく説明します。

製品概要

このチュートリアルを終えると、PL/SQL ブロックとそのタイプ、ブロックのさまざまなセクションとその使用法について理解できるようになります。名前付き PL/SQL ブロックの詳細な説明は、後のチュートリアルで説明します。