ユーザー定義関数のパラメーターとして列を挿入できるかどうかを調べようとしています。
私がしたいのは、特定のテーブルから列を挿入し、関数を呼び出すときにその列の最小値を返すことです。(私の目的では、必要な実際の最小値ではありません。最小値、最大値、分散、標準偏差、または 1 つのスカラー値を与えるその他の数式のいずれであっても、1 つの数値を返すようにしたいだけです)。
ユーザー定義関数のパラメーターとして列を挿入できるかどうかを調べようとしています。
私がしたいのは、特定のテーブルから列を挿入し、関数を呼び出すときにその列の最小値を返すことです。(私の目的では、必要な実際の最小値ではありません。最小値、最大値、分散、標準偏差、または 1 つのスカラー値を与えるその他の数式のいずれであっても、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
私は前にこれをやったことがあります。ユーザー定義データ型を作成する必要があります。次に、ユーザー定義型を関数に渡します。