Sql server 用户定义函数中的数组?
我用VB.NET创建了一个用户定义的函数,并希望在SQLServer中使用该函数。一切似乎都很好 现在我想使用数组作为参数。可能吗 不带参数的测试方法示例: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
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函数提供支持。