テーブル値関数構文を使用せずに複数の値を返す SQL Server 用の CLR ユーザー定義関数を作成する方法はありますか? たとえば、次のような座標変換を実行したいとします。
[SqlFunction()]
public void ConvertCoordinates(SqlDouble x, SqlDouble y, SqlDouble z, out SqlDouble r, out SqlDouble t, out SqlDouble p)
{
r = new SqlDouble(Math.Sqrt((x.Value*x.Value)+(y.Value*y.Value)+(z.Value*z.Value)));
t = new SqlDouble(Math.Acos(r.Value / z.Value));
p = new SqlDouble(Math.Atan(y.Value / x.Value));
}
これは可能ですか?この場合のテーブル値関数は、計算によって複数の出力行が生成されることはないため、不適切と思われます。スカラー値関数の構文を使用すると、3 つの異なる関数を記述して計算を実行し、それぞれを個別に呼び出す必要があります。私の実際の使用例を考えると、これは非常に非現実的です。
上記のロジックは、純粋な T-SQL を使用して実現できることを認識しています。私の実際の使用例はもっと複雑ですが、相互に依存する複数の出力値を持つ単一の行になるだけです。
要するに、それは実現可能ですか?そうではないと思いますが、期待できます。たまたま実現可能である場合、そのような関数を呼び出す T-SQL はどのようになるでしょうか?