欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【给SQL Server传送数组参数的变通办法】,下面是详细的分享!
给SQL Server传送数组参数的变通办法
最近一直在做Dnn模块的开发,过程中碰到这么一个问题,需要同时插入N条数据,不想在程序里控制,但是SQL Sever又不支持数组参数.所以只能用变通的办法了.利用SQL Server强大的字符串处理传把数组格式化为类似"1,2,3,4,5,6"。然后在存储过程中用SubString配合CharIndex把分割开来.
详细的存储过程
| 以下为引用的内容:
CREATE PROCEDURE dbo.ProductListUpdateSpecialList begin transaction Set @PointerCurr=CharIndex(',',@ProductId_Array,@PointerPrev+1) set @TId=cast(SUBSTRING(@ProductId_Array,@PointerPrev+1,LEN(@ProductId_Array)-@PointerPrev) as int) |
网友Bizlogic对此的改进方法:
应该用SQL2000 OpenXML更简单,效率更高,代码更可读:
| 以下为引用的内容:
CREATE Procedure [dbo].[ProductListUpdateSpecialList] AS delete from ProductListSpecial where ModuleId=@ModuleId -- If empty, return DECLARE @idoc int EXEC sp_XML_preparedocument @idoc OUTPUT, @ProductId_Array Insert into ProductListSpecial (ModuleId,ProductId) EXEC sp_XML_removedocument @idoc |
以上所分享的是关于给SQL Server传送数组参数的变通办法,下面是编辑为你推荐的有价值的用户互动:
相关问题:如何向存储过程传递一个数组参数
答:方法一 分割 例:通过SQL Server存储过程传送数组参数删除多条记录 eg. ID 值为'1,2,3' 以下存储过程就是删除表中id号为1,2,3的记录: CREATE PROCEDURE DeleteNews @ID nvarchar(500) as DECLARE @PointerPrev int DECLARE @PointerCurr int DEC... >>详细
相关问题:关于C语言中数组作为参数传递的疑惑~~
答:1、数组做参数,完全无法按值传递。这是由C/C++函数的实现机制决定的。 2、传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。 下面三种函数声明完全等同: void func(int array[10]) void func(int array[]) void func(int *... >>详细
相关问题:在C语言中,数组作为参数,是怎样在函数之间传递的...
答:数组作为参数是按地址传递的 数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
