给SQL Server存储过程,传送数组参数的变通办法-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

给SQL Server存储过程,传送数组参数的变通办法

简介:
 最近一直在做Dnn模块的开发,过程中碰到这么一个问题,需要同时插入N条数据,不想在程序里控制,但是SQL Sever又不支持数组参数.所以只能用变通的办法了.利用SQL Server强大的字符串处理传把数组格式化为类似"1,2,3,4,5,6"
 然后在存储过程中用SubString配合CharIndex把分割开来

详细的存储过程

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





    本文转自无心之柳.NET博客园博客,原文链接http://www.cnblogs.com/9527/archive/2005/09/04/230000.html:,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: