程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Sever怎樣同時插入N條數據而不在程序裡控制

SQL Sever怎樣同時插入N條數據而不在程序裡控制

編輯:關於SqlServer

問:“怎樣同時插入N條數據,卻不在程序裡控制?”

答:“由於SQL Sever不支持數組參數.所以只能用另類的辦法了.利用SQL Server強大的字符串處理傳把數組格式化為類似"1,2,3,4,5,6"。

然後在存儲過程中用SubString配合CharIndex把分割開來。

詳細的存儲過程:

CREATE PROCEDURE dbo.ProductListUpdateSpecialList
@ProductId_Array varChar(800),
@ModuleId int
AS
DECLARE @PointerPrev int
DECLARE @PointerCurr int
DECLARE @TId int
Set @PointerPrev=1
set @PointerCurr=1
begin transaction
Set NoCount ON
delete from ProductListSpecial where ModuleId=@ModuleId
Set @PointerCurr=CharIndex
',',@ProductId_Array,@PointerPrev+1)
set @TId=cast(SUBSTRING(@ProductId_Array,@PointerPrev,
@PointerCurr-@PointerPrev) as int)
Insert into ProductListSpecial
(ModuleId,ProductId) Values(@ModuleId,@TId)
SET @PointerPrev = @PointerCurr
while (@PointerPrev+1 < LEN(@ProductId_Array))
Begin
Set @PointerCurr=CharIndex
(',',@ProductId_Array,@PointerPrev+1)
if(@PointerCurr>0)
Begin
set @TId=cast(SUBSTRING
(@ProductId_Array,@PointerPrev+1,
@PointerCurr-@PointerPrev-1) as int)
Insert into ProductListSpecial
(ModuleId,ProductId) Values(@ModuleId,@TId)
SET @PointerPrev = @PointerCurr
End
else
Break
End
set @TId=cast(SUBSTRING
(@ProductId_Array,@PointerPrev+1,
LEN(@ProductId_Array)-@PointerPrev) as int)
Insert into ProductListSpecial
(ModuleId,ProductId) Values(@ModuleId,@TId)
Set NoCount OFF
if @@error=0
begin
commit transaction
end
else
begin
rollback transaction
end
GO

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved