我想将逗号分隔值转换为存储过程中的行,以便长度为50k的字符串?
我将此逗号分隔的字符串传递给c#application中的过程
create procedure sp_1
(
@Arraylist Nvarchar(max)
)
as
begin
Declare @areaIdarray_list nvarchar(max)
Set @areaIdarray_list = @Arraylist
select rm.AreaId
from table1 rm
where rm.AreaId in(
select cast(value as int)
from dbo.fn_Split(@areaIdarray_list,',')
)
end
它也工作,但只能达到8k字符串的长度。
我想为长度为50k的字符串做这个。
即exec sp_1('1,2,3,..........')
等,直到50k。
我将此逗号分隔的字符串传递给c#application中的过程
由于您没有使用古老版本的SQL Server(考虑到2008年添加了nvarchar(max)
),最好的方法是不要使用逗号分隔的字符串。
而是将表值参数从c#传递给存储过程。
创建用户定义的表类型:
create type dbo.ids as table
(
id int not null primary key
)
那么你需要的就是你的程序:
create procedure stpGetAreas
(
@tvp dbo.ids readonly
)
as
select rm.AreaId
from table1 rm
join @tvp tvp
on rm.AreaId = tvp.id
c#支持连接数据库的不同方式,但是你没有指定你正在使用哪一种方法,而且我不知道你的c#代码应该如何看,而不知道你是如何连接数据库的。