SQL存储过程:如何将文件集合传递给存储过程?

时间:2009-09-29 09:53:34

标签: sql-server

我的程序有代码保存附件,我希望将这些附件传输到数据库,我将使用存储过程来完成此操作。

我需要知道什么是@param类型才能接受二进制文件数组?

最后我有了这个数组,如何将这些数据插入到SQL表中?

我想我正在考虑为1个文件使用byte [],但是如何从C#或.net传递一个字节数组到SP,并且param类型应该接受这个字节数组[]

更新

需要一个适用于2005年和2008年的解决方案。

更新

我决定放弃使用1个大SP处理所有内容的想法。相反,我将有更小的SP,然后处理.net中的事务。

你认为这是一个更好的解决方案,来处理.net数据对象中的事务吗?

4 个答案:

答案 0 :(得分:1)

如果您只需要传递一组值,我建议将它们格式化为XML并将它们作为SQL xml数据类型传递。您可以像使用SQL一样轻松地使用SQL执行XML选择。

如果您以XML格式传递二进制数据,它在技术上也可以工作,但我不确定它是否是一个很好的解决方案。无论如何,这是一个选择。

答案 1 :(得分:1)

对于SQL Server 2008,您可以使用表值参数功能。

这允许您定义表类型的参数,然后从C#代码中将该值作为DataTable提供给该参数。

有关详细信息,请参阅这些博客文章和文章:

这是SQL Server 2008的一项新功能,因此您不会在SQL Server 2000或2005中使用此功能。

更新:如果您还需要支持SQL Server 2005,请查看Erland Sommarskog的优秀文章Arrays and Lists in SQL Server 2005。它提供了一些关于如何在2005年实现这一目标的想法。

马克

答案 2 :(得分:1)

Arrays and Lists in SQL 2005。本文汇总了几乎所有技术,并讨论了每种方法的优点和问题。

答案 3 :(得分:0)

我决定只创建一个SP,并多次调用它,每个文件需要上传一个,并使用C#代码管理事务。