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