0

我想将一系列值插入到一对 SQL 表中,其中的数据需要一些预处理(比如附加一个公共时间戳并对两个表中的数据进行一些修改)。理想情况下,我更喜欢保护我的代码免受直接 SQL 语句的影响,而是选择使用存储过程。如何将这些值传递给存储过程?

谢谢你。

编辑我正在使用 SQL Server 2012 但希望与 2008 兼容。如果有特定于 2012 的解决方案,请告诉我,我很乐意考虑。

4

3 回答 3

4

以 XML 格式发送数据并将其转换为多行。就像是

SELECT
Tbl.Col.value('(span/b)[1]', 'nvarchar(max)')   AS [key],
Tbl.Col.value('(span/var)[1]', 'nvarchar(max)') AS [position],
Tbl.Col.value('@title', 'nvarchar(max)')        AS [tooltip],
Tbl.Col.value('(code)[1]', 'nvarchar(max)')     AS [value]

FROM @xmlData.nodes('/ul/li') Tbl(Col)

有关详细信息,请参阅

于 2013-11-01T18:49:08.563 回答
3

如果您正在为 SQL Server 2008+ 进行开发,那么您可以使用表值参数。请参阅文档

于 2013-11-01T18:45:47.927 回答
3

您可以在存储过程中使用表值参数。这允许将表作为参数传递,以便您可以根据需要定义参数的结构。

请参阅 MSDN 上的“使用表值参数(数据库引擎)” - http://technet.microsoft.com/en-us/library/bb510489.aspx

要调用这样的 SP,请参阅如何将表值参数从 .net 代码传递给存储过程。这个问题被回答了几次。

于 2013-11-01T18:46:34.277 回答