小编Ske*_*lan的帖子

将表作为参数传递给SQLCLR TV-UDF

我们有一个第三方DLL可以在DataTable上运行源信息并生成一些有用的值,我们试图通过SQLCLR将它连接起来,以便在SQL Server 2008中作为表值UDF进行调用.

将这个概念放在这里,我想编写一个CLR表值函数,它对来自DB的源数据表进行操作.

我很确定我理解在T-SQL方面需要发生什么; 但是,方法签名在.NET(C#)代码中应该是什么样的?"来自SQL Server的表数据?"的参数数据类型是什么?

例如

/* Setup */
CREATE TYPE InTableType 
AS TABLE (LocationName VARCHAR(50), Lat FLOAT, Lon FLOAT)
GO 

CREATE TYPE OutTableType 
AS TABLE (LocationName VARCHAR(50), NeighborName VARCHAR(50), Distance FLOAT)
GO

CREATE ASSEMBLY myCLRAssembly 
FROM 'D:\assemblies\myCLR_UDFs.dll' 
WITH PERMISSION_SET = EXTERNAL_ACCESS
GO
CREATE FUNCTION GetDistances(@locations InTableType)
RETURNS OutTableType
AS 
EXTERNAL NAME myCLRAssembly.GeoDistance.SQLCLRInitMethod
GO

/* Execution */

DECLARE @myTable InTableType
INSERT INTO @myTable(LocationName, Lat, Lon) VALUES('aaa', -50.0, -20.0)
INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

c# sqlclr user-defined-functions sql-server-2008

10
推荐指数
1
解决办法
1万
查看次数