是否可以在用户定义的函数中插入列作为参数?

时间:2013-01-10 18:08:15

标签: sql sql-server sql-server-2008 tsql user-defined-functions

我正在试图弄清楚是否可以在用户定义的函数中插入一个列作为参数。

我想要做的是从某个表中插入一列,然后在调用该函数时返回该列的最小值。 (就我的目的而言,它不是我想要的实际最小值,我只想让它返回一个数字,无论是最小值,最大值,方差,标准偏差,还是任何其他能给我一个标量值的数学方程式。)

2 个答案:

答案 0 :(得分:1)

您需要使用sp_executesql

来使用动态SQL
CREATE procedure dbo.[myfunc](@COL NVARCHAR(20),
                             @result int output)
AS
BEGIN
DECLARE @SQLString nvarchar(500)
DECLARE @ParmDefinition nvarchar(500)

SET @SQLString = N'SELECT @max_valueOUT = max(' + @COL + ') FROM mytable'
SET @ParmDefinition = N'@max_valueOUT int OUTPUT'

EXECUTE sp_executesql @SQLString, @ParmDefinition, @max_valueOUT=@result OUTPUT
END

SQL Fiddle

答案 1 :(得分:0)

我以前做过这个。您必须创建用户定义的数据类型。然后将用户定义的类型传递给函数。