我需要将 36 个 float 的数组写入 SQL Server 2005 数据库。是否有最佳实践答案可以解释如何做到这一点?
我无法将其写为字符串,因为我们可能需要查询数百万行的单个值,并且我不想必须解构每一行才能读取它的值。
我还想避免将 36 个参数传递给存储过程。
那么,StackOverflow 的传统智慧有何建议?
最佳答案
在 Sql Server 2008 中,正是因为这个原因才出现了表值参数。然而,在 2005 年,您唯一的选择是 (1) 字符串连接/拆分或 (2) xml。
我会传递 XML,然后插入到表变量中。这是一个例子:
declare @floatsXml nvarchar(max);
set @floatsXml = '<nums><num val="2.123" /><num val="2.123" /></nums>';
declare @floats table (value float);
insert into @floats
select tbl.c.value('@val', 'float')
from @floatsXml.nodes('/nums/num') as tbl(c);
select *
from @floats;
我当前没有安装 sql server,因此我的语法可能略有偏差,但应该基本正确。
关于sql-server - 如何将 float 数组传递给 SQL Server 存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5954872/