違いは次のとおりです。関数はデフォルトでその定義の値(任意のタイプ)を返す必要がありますが、プロシージャの場合はOUT
などのパラメータを使用する必要があります またはIN OUT
結果を取得するためのパラメータ。通常のSQL
で関数を使用できます ここで、SQL
ではプロシージャを使用できません。 ステートメント。
機能と手順のいくつかの違い
-
関数は常にreturnステートメントを使用して値を返しますが、プロシージャはパラメータを介して1つ以上の値を返すか、まったく返さない場合があります。ただし、
OUT
パラメータは引き続き関数で使用できますが、お勧めできません。また、使用する必要がある場合もありません。OUT
を使用する パラメータは、関数がSQLステートメントで使用されることを制限します。 -
関数は、
SELECT
などの一般的なSQLステートメントで使用できます。 、INSERT
、UPDATE
、DELETE
、MERGE
、手順はできません。 -
関数は通常、計算に使用されますが、プロシージャは通常、ビジネスロジックの実行に使用されます。
-
Oracleは、後続のSQLステートメントのパフォーマンスを向上させるために「関数ベースのインデックス」を作成する機能を提供します。これは、クエリのwhere句のインデックス付き列で関数を実行する場合に適用されます。
関数対の詳細情報。こことここの手順。