不在程序里控制,同时插入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

 

posted on 2009-06-18 21:12  ToKens  阅读(177)  评论(0编辑  收藏  举报