Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 用户定义函数中的数组?_Sql Server_Vb.net_Sql Server 2005 - Fatal编程技术网

Sql server 用户定义函数中的数组?

Sql server 用户定义函数中的数组?,sql-server,vb.net,sql-server-2005,Sql Server,Vb.net,Sql Server 2005,我用VB.NET创建了一个用户定义的函数,并希望在SQLServer中使用该函数。一切似乎都很好 现在我想使用数组作为参数。可能吗 不带参数的测试方法示例: Partial Public Class UserDefinedFunctions <Microsoft.SqlServer.Server.SqlFunction()> _ Public Shared Function TestFunction() As SqlString ' Add your

我用VB.NET创建了一个用户定义的函数,并希望在SQLServer中使用该函数。一切似乎都很好

现在我想使用数组作为参数。可能吗

不带参数的测试方法示例:

Partial Public Class UserDefinedFunctions
    <Microsoft.SqlServer.Server.SqlFunction()> _
    Public Shared Function TestFunction() As SqlString
        ' Add your code here
        Return New SqlString("Hello World")
    End Function
End Class
有人能给我一个工作示例或一些解决方法的想法吗


Thanx

阵列是不可能的。将XML改为XML传递您可以轻松表示数组

您需要使用分隔字符串或XML,然后在函数中解析参数。

请检查:这是一个如何使用XML来模拟数组支持的示例:

这是SQL的关键点:

DECLARE @ids xml
SET @ids = '<ids>
     <id>ALFKI</id>
     <id>SPLIR</id>
</ids>'
SELECT * FROM Customers
WHERE CustomerID IN (SELECT ParamValues.ID.value('.','NVARCHAR(20)')
FROM @ids .nodes('/ids/id') as ParamValues(ID) )
在VB.Net代码中,假设您使用的是.NETFramework 3.5,则应该使用LINQtoXML,以便从数组生成XML。这很容易。您可以在此处找到一个介绍性示例:


SQL Server不知道数组是什么,因此无法将数组传递给存储过程或函数。在拆分由字符串组成的列表以模拟数组方面,有XML的替代方法。一些想法:

不过,在SQL Server 2016或更高版本上,您应该查看和:


我认为在2008年还不能在UDF中使用表值参数。对不起,我把我的评论弄糊涂了,现在它们都不见了。不管怎样,您可以为T-SQL函数而不是CLR函数提供支持。