\r\n\r\n
ストアドプロシージャと関数
ストアドプロシージャとファンクションは、プログラミングブロックの2つのタイプです。どちらもプライマリーコールネームを持っています。これらの呼び出し名は、別のプログラミングブロック(プロシージャ、関数、パッケージ、SQLクエリなど)内で呼び出すために使用されます。どちらのオブジェクトタイプもパラメータを受け取り、これらのオブジェクトの背後でタスクを実行します。これは、以下のようなストアドプロシージャを作成するための構文です(ORACLEの場合)。
プロセスプログラムの名称変更(パラメータ)の作成または置換
として
スタート
ステートメント
例外事項
例外処理
結論
以下は、以下のような関数を作成するための構文です(ORACLEの場合)。
関数の機能名(パラメータ)を作成または置換する
return returns_datatype
として
スタート
ステートメント
戻り値/変数を返す。
例外あり。
例外処理。
結論
ストアドプロシージャ
前述したように、ストアドプロシージャはプログラミングブロックという名前がついています。ユーザーの入力としてパラメータを受け取り、それを処理し、手順の背後にある論理に従って結果を与える(または特定の操作を行う)。これらのパラメータには、IN、OUT、INOUTのタイプがあります。変数宣言、変数代入、制御文、ループ、SQLクエリ、その他の関数/プロシージャ/パッケージの呼び出しは、プロシージャ本体に記述することができます。
機能
関数はプログラミングブロックとも呼ばれ、return文を使って値を返す必要があり、値を返す前に本体も(与えられたロジックに従って)何らかの処理を行う。関数は、実行するためのパラメータも受け付ける。関数は、クエリの中から呼び出すことができます。SELECTクエリ内で関数が呼び出されると、SELECTクエリの結果セットの各行に対して適用されます。それらは
一行機能のサブカテゴリがあります。
関数とストアドプロシージャーの違いは何ですか?-すべての関数は return 文を使用して値を返さなければなりません。ストアドプロシージャは、RETURNステートメントを使用して値を返しません。プロシージャ内のRETURN文は、その制御を呼び出し元のプログラムに返します。OUTパラメータは、プロシージャから値を返すために使用できます。-ファンクションはクエリ内部で呼び出すことができますが、ストアドプロシージャはクエリ内部で使用することはできません。-関数を作成するには戻り値のデータ型を含む必要がありますが、プロシージャのDDLでは不要です。 |