sql-server - 如何将 float 数组传递给 SQL Server 存储过程?

标签 sql-server sql-server-2005 stored-procedures

我需要将 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/

相关文章:

sql - 基于特定 ID 的数据透视数据,无需硬编码

sql-server - 通过 MS Access VBA 前端更改 SQL Server 密码

sql-server-2005 - 如何在没有 SSMS 的情况下测试与远程 SQL 2005 的连接?

sql - 插入带有 if else 条件的 select

sql - Postgresql:有没有办法像 Microsoft SQL Server 那样从存储过程返回表数据和输出参数

sql - 将记录的每一列转换为单独的记录

sql-server-2005 - ColdFusion 异常帮助 : coldfusion. runtime.NoOperScope cannot be cast to coldfusion.runtime.ApplicationScope

stored-procedures - 如何使用 blazor 执行存储过程

php - 使用存储过程和 PHP 插入?

c# - 如何分解/运行大型 SQL 查询?