知识大全 给SQL Server传送数组参数的变通办法
Posted 知
篇首语:这个世界看你笑话的人永远比在乎你的人要多。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 给SQL Server传送数组参数的变通办法相关的知识,希望对你有一定的参考价值。
给SQL Server传送数组参数的变通办法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
最近一直在做Dnn模块的开发 过程中碰到这么一个问题 需要同时插入N条数据 不想在程序里控制 但是SQL Sever又不支持数组参数 所以只能用变通的办法了 利用SQL Server强大的字符串处理传把数组格式化为类似 然后在存储过程中用SubString配合CharIndex把分割开来 详细的存储过程 CREATE PROCEDURE dbo ProductListUpdateSpecialList @ProductId_Array varChar( ) @ModuleId int AS DECLARE @PointerPrev int DECLARE @PointerCurr int DECLARE @TId int Set @PointerPrev= set @PointerCurr= begin transaction Set NoCount ON delete from ProductListSpecial where ModuleId=@ModuleId Set @PointerCurr=CharIndex( @ProductId_Array @PointerPrev+ ) set @TId=cast(SUBSTRING(@ProductId_Array @PointerPrev @PointerCurr @PointerPrev) as int) Insert into ProductListSpecial (ModuleId ProductId) Values(@ModuleId @TId) SET @PointerPrev = @PointerCurr while (@PointerPrev+ < LEN(@ProductId_Array)) Begin Set @PointerCurr=CharIndex( @ProductId_Array @PointerPrev+ ) if(@PointerCurr> ) Begin set @TId=cast(SUBSTRING(@ProductId_Array @PointerPrev+ @PointerCurr @PointerPrev ) as int) Insert into ProductListSpecial (ModuleId ProductId) Values(@ModuleId @TId) SET @PointerPrev = @PointerCurr End else Break End set @TId=cast(SUBSTRING(@ProductId_Array @PointerPrev+ LEN(@ProductId_Array) @PointerPrev) as int) Insert into ProductListSpecial (ModuleId ProductId) Values(@ModuleId @TId) Set NoCount OFF if @@error= begin mit transaction end else begin rollback transaction end GO 网友Bizlogic对此的改进方法: 应该用SQL OpenXML更简单 效率更高 代码更可读 CREATE Procedure [dbo] [ProductListUpdateSpecialList] ( @ProductId_Array NVARCHAR( ) @ModuleId INT ) AS delete from ProductListSpecial where ModuleId=@ModuleId If empty return IF (@ProductId_Array IS NULL OR LEN(LTRIM(RTRIM(@ProductId_Array))) = ) 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 ) with (ProductId int ) as C where C [ProductId] is not null EXEC sp_xml_removedocument @idoc cha138/Article/program/SQLServer/201311/22113相关参考
知识大全 SQL Server 2000之日志传送功能 - 描述
SQLServer2000之日志传送功能-描述 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 当
知识大全 SQL Server 2000之日志传送功能-设定
SQLServer2000之日志传送功能-设定 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 日
知识大全 SQL Server 2000之日志传送功能—问题解决
SQLServer2000之日志传送功能—问题解决 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
SQLServer参数化查询大数据下的实践 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 身为一
解决SQLServer2000提示挂起的办法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 解决
知识大全 SQL Server不允许进行远程连接的解决办法[2]
SQLServer不允许进行远程连接的解决办法[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 SQL Server不允许进行远程连接的解决办法[1]
SQLServer不允许进行远程连接的解决办法[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 SQL Server不允许进行远程连接的解决办法[3]
SQLServer不允许进行远程连接的解决办法[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
解决限制访问SQLServer的IP地址的办法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb
知识大全 SQL Server 2008安装过程中出现1608错误的解决办法
SQLServer2008安装过程中出现1608错误的解决办法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来