ストアドプロシージャに比べて、関数にはどのような利点/状況がありますか?機能の使用を正当化したい。ストアドプロシージャは、トランザクションの処理、入力、複数の値、insert into ... execなど、あらゆる点でメリットがあるようです。それでは、spではなく関数を適用する理想的な状況はいつですか?これは意見に基づく質問や推奨事項ではありません。また、常にspsを使用するように要求するのではなく、関数の利点を確認したいだけです。
5番は関数の利点だと思いますが、sprocsにはこれを回避する方法がたくさんあります。
クイック検索から私は以下を見つけました 記事
uDFとSPの利点について:
プロシージャではSELECTとDML(INSERT/UPDATE/DELETE)ステートメントを使用できますが、関数ではSELECTステートメントのみを使用できます。
これを使用して、クエリの使用を、関数を介してのみ選択ステートメントに制限できます。
プロシージャはSELECTステートメントで使用できませんが、関数はSELECTステートメントに埋め込むことができます。
ストアドプロシージャはSQLステートメントでWHERE/HAVING/SELECTセクションのどこにも使用できませんが、関数は使用できます。
返された行ごとにudfを実行するため、これはクエリの負荷に影響を与える可能性があります。
テーブルを返す関数は、別の行セットとして扱うことができます。これは、他のテーブルとのJOINで使用できます。
インライン関数は、パラメーターを取り、JOINやその他の行セット操作で使用できるビューと考えることができます。
私の意見では、それは実際には関連するユースケースの問題です。行ごとのデータを操作する必要がある場合、またはDMLクエリを実行する権限を持つユーザーに対してDMLクエリが実行されないように安全にしたい場合は、関数を使用できます。