有没有办法为 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));
}
这甚至可能吗?在这种情况下,表值函数似乎不合适,因为计算永远不会产生超过一个输出行。使用标量值函数语法,我必须编写三个不同的函数来执行计算并分别调用每个函数。鉴于我的实际用例,这是非常不切实际的。
我意识到上面的逻辑可以用纯T-SQL来完成;我的实际用例更复杂,但仍只会导致单行具有多个相互依赖的输出值。
那么,归根结底,可行吗?我不认为它是,但人们可以希望。如果碰巧它是可行的,那么调用这样一个函数的 T-SQL 会是什么样子?