相关疑难解决方法(0)

将表作为参数传递给sql server UDF

我想将一个表作为参数传递给一个缩放器UDF.

我还希望将参数限制为只有一列的表.(可选的)

这可能吗?

编辑

我不想传递表名,我想传递数据表(作为参考,我认为)

编辑

我希望我的Scaler UDF基本上采用值表并返回行的CSV列表.

IE

col1  
"My First Value"  
"My Second Value"
...
"My nth Value"
Run Code Online (Sandbox Code Playgroud)

会回来的

"My First Value, My Second Value,... My nth Value"
Run Code Online (Sandbox Code Playgroud)

我想对表做一些过滤,IE确保没有空值并确保没有重复.我期待的是:

SELECT dbo.MyFunction(SELECT DISTINCT myDate FROM myTable WHERE myDate IS NOT NULL)
Run Code Online (Sandbox Code Playgroud)

sql sql-server parameters sql-server-2005 user-defined-functions

42
推荐指数
3
解决办法
14万
查看次数

CLR具有数组参数的表值函数

我有一个像这样的SQL CLR函数:

public partial class UserDefinedFunctions {
    [Microsoft.SqlServer.Server.SqlFunction(TableDefinition = "number int", FillRowMethodName = "FillRow")]
    public static IEnumerable MyClrFunction(object obj) {
        // read obj array input and then
        var result = new ArrayList();
        result.Add((SqlInt32)1);
        result.Add((SqlInt32)2);
        result.Add((SqlInt32)3);
        return result;
    }

    public static void FillRow(object obj, out SqlInt32 number) {
        number = (SqlInt32)obj;
    }

}
Run Code Online (Sandbox Code Playgroud)

我想用这种方式使用它:

DECLARE @x arrayOfInt

INSERT INTO @x VALUES (10)
INSERT INTO @x VALUES (20)
INSERT INTO @x VALUES (30)

SELECT * FROM dbo.MyClrFunction(@x)
Run Code Online (Sandbox Code Playgroud)

arrayOfInt是:

CREATE TYPE [dbo].[arrayOfInt] …
Run Code Online (Sandbox Code Playgroud)

sql-server sqlclr user-defined-functions table-valued-parameters

9
推荐指数
1
解决办法
7602
查看次数