Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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存储过程:如何将文件集合传递给存储过程?_Sql Server - Fatal编程技术网

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

Sql server SQL存储过程:如何将文件集合传递给存储过程?,sql-server,Sql Server,我的程序有保存附件的代码,我希望将这些附件传输到数据库,我将使用存储过程来完成这项工作 我需要知道接受二进制文件数组的@param类型是什么 最后,一旦我有了这个数组,如何将这个数据插入到SQL表中 我想我正在考虑对一个文件使用byte[],但是如何从C或.net将一组字节数组传递给SP,以及参数类型应该是什么来接受这个byte[] 更新 需要一个能在2005年和2008年起作用的解决方案 更新 我决定放弃使用一个大SP来处理所有事务的想法。相反,我将使用更小的SP,然后在.net中处理事务 您

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

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

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

我想我正在考虑对一个文件使用byte[],但是如何从C或.net将一组字节数组传递给SP,以及参数类型应该是什么来接受这个byte[]

更新

需要一个能在2005年和2008年起作用的解决方案

更新

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


您认为在.net数据对象中处理事务是更好的解决方案吗?

如果您只需要传递一个值数组,我建议将它们格式化为XML并作为SQL XML数据类型传递。您可以使用SQL从XML中执行select,这与从表中执行select一样简单


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

如果您只需要传递一个值数组,我建议将它们格式化为XML并作为SQL XML数据类型传递。您可以使用SQL从XML中执行select,这与从表中执行select一样简单


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

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

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

有关更多信息,请参阅以下博客帖子和文章:

这是SQLServer2008的一项新功能,因此SQLServer2000或2005中不会有此功能

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


Marc

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

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

有关更多信息,请参阅以下博客帖子和文章:

这是SQLServer2008的一项新功能,因此SQLServer2000或2005中不会有此功能

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


Marc参见。本文总结了几乎所有的技术,并讨论了每种方法的优点和问题。

请参阅。这篇文章总结了几乎所有存在的技术,并讨论了每种方法的优点和问题。

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

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

您使用哪种SQL方言作为答案将不同您使用哪种SQL方言作为答案将不同我想我需要传递一个字节[]数组。在这种情况下,XML肯定不够用?XML应该适合您的场景。请参阅OpenXML:我想我需要传递一个byte[]数组。在这种情况下,XML肯定不够用?XML应该适合您的场景。请参阅OpenXML:谢谢,但我需要一个也能在2005年使用的解决方案。不过,我决定从等式中去掉2000。谢谢,但我需要一个在2005年也能奏效的解决方案。然而,我决定从等式中减去2000。