我正在设想诸如获取对象集合并将其发送到存储过程的方式,即集合映射到 TABLE 参数或其他东西。这样的事情存在吗?
实施方面,我们使用 SQL Server 2008,但如果可能的话,我想坚持普遍支持的方法[阅读接近多个供应商兼容]。我意识到我可以做一些专门的解析,实际上我也不需要优化这个(即我一次只能保存一条记录),但我想知道是否有一种通用的最佳实践方法来保存多个通过存储过程记录?
我正在设想诸如获取对象集合并将其发送到存储过程的方式,即集合映射到 TABLE 参数或其他东西。这样的事情存在吗?
实施方面,我们使用 SQL Server 2008,但如果可能的话,我想坚持普遍支持的方法[阅读接近多个供应商兼容]。我意识到我可以做一些专门的解析,实际上我也不需要优化这个(即我一次只能保存一条记录),但我想知道是否有一种通用的最佳实践方法来保存多个通过存储过程记录?
一般来说,我知道有两种方法,遗憾的是这两种方法都不是交叉实现的。
xml参数:
create procedure sp_test1
(
@Data xml
)
as
begin
select
D.r.value('@ID', 'nvarchar(128)') as ID,
D.r.value('@Name', 'nvarchar(128)') as Name
from @Data.nodes('Data/row') as D(r)
end;
declare @Data xml
select @Data = (select * from test for xml raw('row'), root('Data'))
exec dbo.sp_test1
@Data = @Data;
表变量
create procedure sp_test2
(
@tData tbl_test readonly
)
as
begin
select *
from @tData
end
declare @tData tbl_test
insert into @tData
select * from test
exec dbo.sp_test2
@tData = @tData;
请参阅SQL FIDDLE 示例。
如果你问我,我建议使用 xml:
我还必须警告您,根据我的经验,对于大量记录,xml 可能不会那么快。