不在程序里控制,同时插入N条数据
由于SQL Sever不支持数组参数.所以只能用另类的办法了.利用SQL Server强大的字符串处理传把数组格式化为类似"1,2,3,4,5,6"。
然后在存储过程中用SubString配合CharIndex把分割开来。
用SQL2000 OpenXML简单,效率更高,代码可读:
CREATE Procedure [dbo].[ProductListUpdateSpecialList]
(
@ProductId_Array NVARCHAR(2000),
@ModuleId INT
)
AS
delete from ProductListSpecial where ModuleId=@ModuleId
-- If empty, return
IF (@ProductId_Array IS NULL OR LEN(LTRIM (RTRIM(@ProductId_Array))) = 0)
RETURN
DECLARE @idoc int
EXEC sp_xml_preparedocument @idoc OUTPUT, @ProductId_Array
Insert into ProductListSpecial (ModuleId,ProductId)
Select @ModuleId,C.[ProductId] FROM OPENXML(@idoc, '/Products/Product', 3)
with (ProductId int ) as C
where C.[ProductId] is not null
EXEC sp_xml_removedocument @idoc