SQL Server のユーザー定義関数
SQL Server のユーザー定義関数
「 よく使われる SQL Server のビルトインのファンクション 」 では、SQL Server の組み込み関数についてみてきました。
次は SQL Server のユーザー定義の関数を作って使ってみましょう。
ユーザー定義関数とは
SQL Server のユーザー定義関数では、入力パラメターに対して複雑な処理を行い、戻り値としてひとつの値かテーブル形式で値を返すことができます。
複雑な処理を .NET Framework プログラミング言語で記述し、CLR ユーザー定義関数を作ることも可能です。
利点としては、機能をモジュール化できることや、プランがキャッシュ・再利用されるのでコンパイルにかかる時間が削減され実行時間が速くなることなどがあげられます。
ユーザー定義関数は便利なのですが、気をつけて使わないと、フィルター前の大量のレコードに対して実行されるようなクエリーを書いてしまうと、無駄な実行時間がかかります。
必要のないレコードにはユーザー定義関数が実行されないようなスクリプトを書くように気をつけてください。
ユーザー定義関数でできること・できないこと
ユーザー定義関数で変更できるのは、ローカル変数などのスコープ内の値のみで、テーブルの値を挿入・変更・削除等のスコープ外のリソースを変更するような処理はできません。
テーブル変数は作れて更新等可能ですが、一時テーブルは作れません。
スコープ外のリソースの変更が伴う処理がしたい時はユーザー定義関数ではなく、ストアドプロシージャを使ってくださいね。