从CLR存储过程调用返回表变量

时间:2013-04-12 16:06:46

标签: c# clr sql-server-2012 sqlclr clrstoredprocedure

我有一个现有的CLR,它使用XST来粉碎和验证传入的XML。我想将数据点(不关心XML本身)捕获到可以直接插入数据库表的表中。所以我会调用我的CLR存储过程,它将返回4列数百或行,我可以简单地做一个

insert into EXISTINGtable 
select * from TableReturnedFromCLRspCAll

它不一定是SP它可能是一个UDF ...我真正的问题是如何让CLR返回一个表。我也需要能够传递表定义。因此,对于CLR返回的表...我希望将4列名称和类型作为对CLR的调用的一部分作为变量。

如果有人可以帮助我,我会非常感激和印象非常深刻,因为我已经问过一些非常有经验的家伙,当我到达CLR有动态表和/或CLR时他们都会举手完全归还一张桌子。

谢谢!

1 个答案:

答案 0 :(得分:1)

来自MSDN http://msdn.microsoft.com/en-us/library/ms131094.aspx

  

返回表格结果

     

要将查询结果直接发送到客户端,请使用其中一个   SqlPipe对象上的Execute方法的重载。这是   将结果返回给客户端的最有效方法,因为数据是   转移到网络缓冲区而不复制到托管   存储器中。

我没有从存储过程中尝试过,但我使用以下示例从CLR UDF返回了一个表。 http://msdn.microsoft.com/en-us/library/ms131103.aspx