我正在设想一些东西,比如获取一个对象集合并以一种集合映射到TABLE参数或其他东西的方式发送到存储过程。这样的事情存在吗?
实施明智我们使用SQL Server 2008,但我想坚持一般支持的方法[尽可能阅读接近多个供应商兼容]。我意识到我可以做一些专门的解析,并且实际上我也不需要优化它(即我可以一次只保存一条记录),但我想知道是否有一般的最佳实践方法来保存多个通过存储过程记录?
答案 0 :(得分:0)
一般来说,我知道有两种方法,遗憾的是它们都没有交叉实施。
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;
如果你问我,我建议使用xml:
我也必须警告你,从我的经验来看,对于大量的记录来说,xml可能不会那么快。