PL SQLのプロシージャと関数に関する完全ガイド

公開: 2023-01-30
PL SQLのプロシージャと関数に関する完全ガイド

プログラミング言語は、コンピュータ プログラムを記述するためのシステムです。 多くのプログラミング言語はテキストベースですが、グラフィカルな言語もあります。 これらの言語は、プログラマーがコンピューターと通信するのに役立ちます。 構造化照会言語 (SQL) は、リレーショナル データベースに格納されたデータの格納、操作、および取得に役立つプログラミング言語の 1 つです。 今日のガイドでは、PL SQL のサブプログラムである名前ブロック (プロシージャーと関数) の実行に関する詳細を共有します。 したがって、PL SQL のプロシージャと関数に関する完全なガイドを探していた場合は、適切なページにたどり着きました。 このドキュメントでは、PL SQL ストアド プロシージャのトピックをカバーするとともに、PL SQL プロシージャの例についても学習します。 言うまでもなく、PL SQL 呼び出しプロシージャー、PL SQL 終了プロシージャー、および PL SQL 関数の例は、初心者のプログラマーにとって同様に重要です。 それでは、PL SQLに関する完全なガイドを始めましょう。

PL SQLのプロシージャと関数に関する完全ガイド

コンテンツ

  • PL SQLのプロシージャと関数に関する完全ガイド
  • PL SQLとは?
  • PL SQLのプロシージャと関数とは?
  • PL SQL でストアド プロシージャと関数を作成する方法
  • PL SQLにおけるストアド プロシージャと関数の利点
  • ストアド プロシージャを作成するための構文
  • PL SQLプロシージャの例
  • PL SQLで関数を作成するための構文
  • PL SQL関数の例
  • PL SQL終了手順とは?
  • ストアドプロシージャと関数プロシージャの違い

PL SQLのプロシージャと関数に関する完全ガイド

ここでは、PL SQL プロシージャーと関数を例とともに詳細に示しました。

PL SQLとは?

  • PL SQL は、SQL の手続き型言語拡張機能の短縮形です。
  • PL SQL はプログラマー向けのブロック構造言語であり、SQL の機能と手続き型ステートメント組み合わせるのに役立ちます。
  • これは、 Oracle Corporation の手続き上の拡張機能です。
  • この手続き型言語は、 Oracleデータベース、 Times Tenインメモリ データベース、およびIBM Db2で使用できます。
  • 実行時には、PL/SQL と SQL の両方が同じサーバー プロセス内で実行されるため、最適な効率が得られます。
  • PL SQL は、データベースの移植性セキュリティ、および堅牢性を強化することにより、SQL ステートメントの効果的で中断のない処理を保証します。
  • PL SQL とは、単純に、 SQLを介して何を行うか、およびその手続き型の方法を介してそれを行う方法についてコンパイラーに指示することを意味します。
  • PL SQL は、ループ条件、およびオブジェクト指向の概念を使用して、プログラマーにより多くの制御を提供します。

PL SQLのプロシージャと関数とは?

  • PL SQL には、プロシージャー関数と呼ばれる 2 つのサブプログラムがあります。
  • 通常、手続きを使用してアクション実行し、関数を使用して値を計算します
  • PL SQL のサブプログラムには、宣言部分実行可能部分、およびオプションの例外処理部分があります。
  • これらのサブプログラムは、データベース オブジェクトとして作成し、データベースに保存できます。
  • PL SQL のプロシージャおよび関数サブプログラムは、値を計算して返すために主に使用される単一の値を返します。
  • これらのサブプログラムは、特定のタスクを実行できるPL/SQL および SQL 文の集まりです。

PL SQL でストアド プロシージャと関数を作成する方法

PL SQL ストアド プロシージャまたは関数のコード ブロックが記述されると、それらは Oracle エンジンによってコンパイルされます。 コンパイルされると、データベース オブジェクトとして保存されます。 コードのストアド プロシージャまたは関数ブロックは、次の 3 つの部分で構成されます。

  • 宣言部分: この部分では、プロシージャまたは関数で使用される変数、定数、カーソル、または例外が宣言されます。
  • Executable Part : この部分には、作成する手続きや関数の定義が書かれています。 この部分も、値の割り当て、データの操作、および実行の制御を行う PL/SQL または SQL ステートメントで構成されます。
  • 例外処理部分: この最後の部分はオプションであり、実行可能部分に記述されたコードの実行中に発生する可能性のある例外が記述されます。

PL SQLにおけるストアド プロシージャと関数の利点

PL SQL プロシージャーの例を明らかにする前に、まずプロシージャーおよび関数サブプログラムの利点を理解する必要があります。

  • データベースのパフォーマンスを向上: Oracle エンジンは、自動コンパイルに役立ちます。 また、PL SQL コール プロシージャまたは関数が実行されるたびに、Oracle エンジンはコンパイルされたコードを SGA、システム グローバル エリアにロードし、実行を高速化します。
  • 再利用性と冗長性なし: プロシージャまたは関数の同じコード ブロックを複数のデータに対して何度でも呼び出すことができるため、コードの行数を繰り返し記述することはできません。
  • セキュリティ: データベースのセキュリティは、ストアド プロシージャまたは関数を使用して維持されます。これは、ユーザーに権限を付与することで、使用方法とアクセスを制御するのに役立つためです。 ただし、データベースを編集または操作する権限はユーザーに付与されません。
  • 整合性: PL SQL ストアド プロシージャまたは関数を使用するもう 1 つの利点は、Oracle エンジンによってデータベース オブジェクトとして格納されるため、整合性が保証されることです。
  • メモリの節約:ストアド プロシージャまたは関数の多くの利点の 1 つは、メモリを共有することです。これにより、メモリをプロシージャまたは関数の単一のコピーとして保存し、同じことを行う権限を持つ多数のユーザーが読み込むことができます。

また読む: javascript:void(0) エラーを修正する方法

ストアド プロシージャを作成するための構文

Oracle でストアド プロシージャを作成するために使用される以下の構文を確認できます。

 CREATE OR REPLACE PROCEDURE <procedure_name>
(<変数名>IN/OUT/IN OUT <データ型>,
<変数名>IN/OUT/IN OUT <データ型>,...) IS/AS
変数/定数宣言;
始める
-- PL/SQL サブプログラム本体。
例外
-- 例外処理ブロック;
END <手続き名>; 

Oracleでストアドプロシージャを作成する構文

上記のコードでは:

  • Procedure_nameは、プロシージャーの名前を表します。
  • Variable_nameは、ストアド プロシージャで使用される変数の名前を表します。
  • 作成または置換プロシージャは、作成するプロシージャの名前を指定するためのキーワードを表します。
  • BeginException 、およびEndは、プロシージャのさまざまなセクションが作成されることを示すために使用されるキーワードを表します。
  • IN/OUT/IN OUTはパラメーター モードを表し、 INはユーザーからの値を受け入れる変数に使用されるREAD ONLYモードを指します。 これがデフォルトのパラメータ モードです。
  • OUTは、ユーザーに値を返す変数に使用されるWRITE ONLYモードを指します。
  • IN OUTは、値を受け入れるか、ユーザーに値を返す変数に使用されるREADおよびWRITEモードを指します。
  • <procedure_name>は、プロシージャ定義の終了を表します。 その代わりに単純に END を使用することもできます。

PL SQLプロシージャの例

以下のプロシージャ コードでは、ストアド プロシージャを使用して 2 つの数値を加算する方法を明確に示す簡単な例を次に示します。

 サーバー出力をオンに設定します。
CREATE OR REPACE PROCEDURE Sum ( a IN 番号、b IN 番号) IS c 番号;
始める
c := a+b;
dbms_output.put_line ('2 つの番号の合計 = '|| c);
END 合計;

プロシージャを呼び出す場合、次のコードが実行されます。

 サーバー出力をオンに設定します。
宣言する
×数;
y 番号;
始める
x := &x;
y := &y;
Sum(x,y);
終わり;
どこ:
x の値を入力してください: 10
y の値を入力してください: 20
2 つの番号の合計: 30

PL SQL プロシージャーが正常に作成されました。

PL SQLで関数を作成するための構文

ストアド プロシージャの構文とその例を作成する方法がわかったので、次は PL/SQL での関数の作成について説明します。

 関数の作成または置換 <関数名>
(<変数名> IN <データ型>,
<変数名> IN <データ型>,...)
RETURN <データ型> IS/AS
変数/定数宣言;
始める
-- PL/SQL サブプログラム本体。
例外
-- 例外処理ブロック;
END <関数名>; 

関数を作成するための構文

上記のコードでは:

  • Function_nameは、関数の名前を表します。
  • Variable_nameは、関数で使用される変数の変数名を表します。
  • Create or Replace functionは、作成する関数の名前に使用されるキーワードを表します。
  • INは、ユーザーからの値を受け入れる変数に使用されるREAD ONLYモードを表します。 これはデフォルトのパラメーターです。
  • Returnは、関数が返す値のデータ型を指定するデータ型が後に続くキーワードを表します。

また読む:修正コマンドがエラーコード1 Python Egg Infoで失敗しました

PL SQL関数の例

次に示すのは、2 つの数値を加算する関数の使用方法を示す PL SQL 関数の例です。

 サーバー出力をオンに設定します。
CREATE OR REPLACE FUNCTION Sum(a IN 番号、b IN 番号) RETURN 番号 IS
c番号;
始める
c := a+b;
戻る c;
終わり; 

2 つの数値を加算する関数の構文

関数 sum を呼び出す場合、次のコードが実行されます。

 サーバー出力をオンに設定します。
宣言する
no1番号;
no2番号;
結果番号;
始める
no1 := &no1;
no2 := &no2;
結果:=合計(no1、no2);
dbms_output.put_line('Sum of two nos='||result);
終わり;
どこ:
no1 の値を入力してください: 5
no2 の値を入力してください: 5
2 つの番号の合計: 10

PL SQL プロシージャーが正常に作成されました。

関数 sum を呼び出す構文

次のセクションを読んで、PL SQL 出口プロシージャーについて理解してください。

PL SQL終了手順とは?

Exit は、WHEN 句の条件が満たされるとステートメントがループの現在の反復を終了し、現在進行中のループの最後に制御を移すときに役立ちます。 Exit ステートメントは、ループの外では使用できません。Exit ステートメントと Continue ステートメントを使用して無条件にループを終了するか、Exit When ステートメントと Continue When ステートメントを条件付きで使用して、ループを終了するためのものです。

ストアドプロシージャと関数プロシージャの違い

PL SQL のプロシージャと関数について理解できたので、いよいよこの 2 つの基本的な違いについても説明します。

  • ストアドプロシージャはプログラムの呼び出し部分に値を返す場合と返さない場合がありますが、関数はプログラムの呼び出し部分に値を返します。
  • ストアド プロシージャは OUT パラメータを使用して値を返しますが、関数は RETURN を使用して値を返します。
  • ストアド プロシージャは IN、OUT、IN OUT パラメータを使用しますが、関数は IN パラメータのみを使用します。
  • ストアドプロシージャは、呼び出し後に返される値のデータ型を指定しませんが、関数は呼び出し後に返される値のデータ型を指定します。
  • ストアド プロシージャはコードの関数ブロックから呼び出すことはできませんが、関数はコードのプロシージャ ブロックから呼び出すことができます。

おすすめされた:

  • DDR4 と DDR5 RAM: どちらがゲームに適していますか?
  • ブレッドボードの種類は何ですか?
  • テキストを解析する方法
  • SQL で区切り文字で文字列を分割する 4 つの方法

PL SQL のプロシージャーと関数に関するドキュメントが役に立ち、PL SQL とそのサブプログラム、プロシージャーと関数、PL SQL 出口プロシージャーなどに関するすべての疑問を解決できたことを願っています。 私たちが何らかの形であなたを助けた場合、またはあなたの側からさらに質問がある場合は、以下にコメントを残してお知らせください.