logo

PL/SQL の概要

PL/SQL は、開発者が SQL の機能と手続き型ステートメントを組み合わせることを可能にするブロック構造言語です。ブロックのすべてのステートメントは一度に Oracle エンジンに渡されるため、処理速度が向上し、トラフィックが減少します。

PL/SQLの基本

  • •PL/SQL は、Structured Query Language (SQL) の Procedural Language extensions の略です。
  • PL/SQL は、SQL とプログラミング言語の手続き型機能を組み合わせたものです。
  • Oracle は PL/SQL エンジンを使用して PL/SQL ステートメントを処理します。
  • PL/SQL には、条件やループなどの手続き型言語要素が含まれています。定数と変数、プロシージャと関数、型とそれらの型の変数、およびトリガーの宣言が可能です。

SQL の欠点:



  • SQL はプログラマに条件チェック、ループ、分岐などの手法を提供しません。
  • SQL ステートメントは一度に 1 つずつ Oracle エンジンに渡されるため、トラフィックが増加し、速度が低下します。
  • SQL には、データ操作中のエラー チェック機能がありません。

PL/SQL の特徴:

  1. PL/SQL は基本的に手続き型言語であり、意思決定、反復などの手続き型プログラミング言語の機能を提供します。
  2. PL/SQL では、1 つのコマンドを使用して 1 つのブロックで多数の問合せを実行できます。
  3. プロシージャ、ファンクション、パッケージ、トリガー、タイプなどのPL/SQLユニットを作成し、アプリケーションで再利用できるようにデータベースに保存できます。
  4. PL/SQLには、例外処理ブロックと呼ばれる、PL/SQLブロックで発生した例外を処理する機能が用意されています。
  5. PL/SQL で作成されたアプリケーションは、Oracle が動作しているコンピュータ ハードウェアまたはオペレーティング システムに移植できます。
  6. PL/SQL 広範なエラー チェックを提供します。

SQL と PL/SQL の違い:

SQL PL/SQL
SQL は、DML および DDL 操作を実行するために使用される単一のクエリです。 PL/SQL は、プログラム ブロック/プロシージャ/関数など全体を記述するために使用されるコードのブロックです。
これは宣言的であり、物事をどのように行う必要があるかではなく、何を行う必要があるかを定義します。 PL/SQL は、物事をどのように実行する必要があるかを定義する手続き型です。
単一のステートメントとして実行します。 ブロック全体として実行します。
主にデータ操作に使用されます。 主にアプリケーションを作成するために使用されます。
PL/SQL コードを含めることはできません。 これは SQL の拡張機能であるため、内部に SQL を含めることができます。

PL/SQL ブロックの構造:



PL/SQL は、手続き型言語にある構造を追加することで SQL を拡張し、結果として SQL よりも強力な構造言語を実現します。 PL/SQL の基本単位はブロックです。すべての PL/SQL プログラムはブロックで構成されており、相互にネストすることができます。

通常、各ブロックはプログラム内の論理アクションを実行します。ブロックは次のような構造になっています。

Java文字列のトリム
 DECLARE declaration statements; BEGIN executable statements EXCEPTIONS exception handling statements END;>
  • 宣言セクションは次で始まります 宣言する データを一時的に保存する変数、定数、カーソルとしてのレコードを宣言できるキーワード。基本的には PL/SQL 識別子の定義で構成されます。コードのこの部分はオプションです。
  • 実行セクションは次で始まります 始める そして次で終わります 終わり これは必須のセクションであり、ループや条件文などのタスクを実行するためのプログラム ロジックがここに記述されます。全てをサポートしてくれます DML コマンド、 DDL コマンドと SQL*PLUS 組み込み関数も同様です。
  • 例外セクションは次で始まります 例外 キーワード。このセクションはオプションであり、実行時エラーが発生したときに実行されるステートメントが含まれます。例外はすべてこのセクションで処理できます。

PL/SQL識別子

変数、定数、プロシージャ、カーソル、トリガーなど、いくつかのPL/SQL識別子があります。



  1. 変数 注: 他のいくつかのプログラミング言語と同様、PL/SQL の変数は使用前に宣言する必要があります。有効な名前とデータ型も必要です。変数宣言の構文:
variable_name datatype [NOT NULL := value ];>
  1. PL/SQL で変数を宣言する方法を示す例:

C




JavaScript 演算子
SQL>サーバー出力をオンに設定します;>> SQL>宣言する> >var1 INTEGER;> >var2 REAL;> >var3 varchar2(20) ;> BEGIN> >null;> END;> />

>

>

  1. 出力:
PL/SQL procedure successfully completed.>
  1. 説明:
    • サーバー出力をオンに設定 : dbms_output で使用されるバッファを表示するために使用されます。
    • var1 整数 : という名前の変数の宣言です。 var1 これは整数型です。 float、int、real、smallint、long など、使用できるデータ型は他にもたくさんあります。また、SQL で使用される変数や、NUMBER(prec,scale)、varchar、varchar2 などもサポートしています。
    • PL/SQL プロシージャが正常に完了しました。: コードがコンパイルされ、正常に実行されると表示されます。
    • END の後にスラッシュ (/);: スラッシュ (/) は、SQL*Plus にブロックを実行するように指示します。
    • 代入演算子 (:=) : 変数に値を代入するために使用されます。
  2. 出力の表示 : 出力は、ユーザーが出力、デバッグ情報を表示し、PL/SQL ブロック、サブプログラム、パッケージおよびトリガーからメッセージを送信できるようにする組み込みパッケージである DBMS_OUTPUT を使用して表示されます。 PL/SQL を使用してメッセージを表示する方法を示す例を見てみましょう。

C




SQL>サーバー出力をオンに設定します;>> SQL>宣言する> >var varchar2(40) :=>'I love GeeksForGeeks'> ;> >BEGIN> >dbms_output.put_line(var);> >END;> >/>

>

>

  1. 出力:
I love GeeksForGeeks PL/SQL procedure successfully completed.>
  1. 説明:
    • dbms_output.put_line : このコマンドは、PL/SQL 出力を画面に送信するために使用されます。
  2. コメントの使用 : 他の多くのプログラミング言語と同様に、PL/SQL でも、コード内にコメントを挿入できますが、コードには影響を与えません。 PL/SQL でコメントを作成するには、次の 2 つの構文があります。
    • 単一行コメント: 単一行のコメントを作成するには、記号– –使用されている。
    • 複数行のコメント: 複数行にわたるコメントを作成するには、記号/*そして*/使用されている。
  3. ユーザーからの意見を受け取る : 他のプログラミング言語と同様に、PL/SQL でもユーザーから入力を取得して変数に格納できます。 PL/SQL でユーザーから入力を取得する方法を示す例を見てみましょう。

C

アメリカは都市はいくつありますか




SQL>サーバー出力をオンに設定します;>> SQL>宣言する> >-- taking input>for> variable a> >a number := &a;> > >-- taking input>for> variable b> >b varchar2(30) := &b;> >BEGIN> >null;> >END;> >/>

>

>

  1. 出力:
Enter value for a: 24 old 2: a number := &a; new 2: a number := 24; Enter value for b: 'GeeksForGeeks' old 3: b varchar2(30) := &b; new 3: b varchar2(30) := 'GeeksForGeeks'; PL/SQL procedure successfully completed.>
  1. (***) PL/SQL の例を見て、上記のすべての概念を 1 つのコード ブロックで示してみましょう。

C




--PL/SQL code to print sum of two numbers taken from the user.> SQL>サーバー出力をオンに設定します;>> SQL>宣言する> > >-- taking input>for> variable a> >a integer := &a ;> > >-- taking input>for> variable b> >b integer := &b ;> >c integer ;> >BEGIN> >c := a + b ;> >dbms_output.put_line(>'Sum of '>||a||>' and '>||b||>' is = '>||c);> >END;> >/>

>

>

Cでの二次元配列プログラム
Enter value for a: 2 Enter value for b: 3 Sum of 2 and 3 is = 5 PL/SQL procedure successfully completed.>

PL/SQL実行環境:

PL/SQL エンジンは Oracle エンジン内にあります。Oracle エンジンは、単一の SQL 文だけでなく、多数の文のブロックも処理できます。これらの SQL 文が存在する場合、Oracle エンジンへの呼び出しは、任意の数の SQL 文を実行するために 1 回だけ行う必要があります。 PL/SQL ブロック内にバンドルされています。