我想将一系列值插入到一对 SQL 表中,其中的数据需要一些预处理(比如附加一个公共时间戳并对两个表中的数据进行一些修改)。理想情况下,我更喜欢保护我的代码免受直接 SQL 语句的影响,而是选择使用存储过程。如何将这些值传递给存储过程?
谢谢你。
编辑我正在使用 SQL Server 2012 但希望与 2008 兼容。如果有特定于 2012 的解决方案,请告诉我,我很乐意考虑。
我想将一系列值插入到一对 SQL 表中,其中的数据需要一些预处理(比如附加一个公共时间戳并对两个表中的数据进行一些修改)。理想情况下,我更喜欢保护我的代码免受直接 SQL 语句的影响,而是选择使用存储过程。如何将这些值传递给存储过程?
谢谢你。
编辑我正在使用 SQL Server 2012 但希望与 2008 兼容。如果有特定于 2012 的解决方案,请告诉我,我很乐意考虑。
以 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)
有关详细信息,请参阅sqlxml
如果您正在为 SQL Server 2008+ 进行开发,那么您可以使用表值参数。请参阅文档。
您可以在存储过程中使用表值参数。这允许将表作为参数传递,以便您可以根据需要定义参数的结构。
请参阅 MSDN 上的“使用表值参数(数据库引擎)” - http://technet.microsoft.com/en-us/library/bb510489.aspx
要调用这样的 SP,请参阅如何将表值参数从 .net 代码传递给存储过程。这个问题被回答了几次。