存储过程(05)里面用到varchar(max),现在要转移到2000,怎么处理
存储过程(05)里面用到varchar(max),现在要转移到2000,怎么办?RT;[解决办法]varchar(8000)注意拼接的长度,
存储过程(05)里面用到varchar(max),现在要转移到2000,怎么办?
RT;
[解决办法]
varchar(8000)
注意拼接的长度,超过8000了多定义几个,加一起处理。
[解决办法]
SQL code varchar(8000)
[解决办法]
就是多用几个字符去拼接!!
[解决办法]
根据以下3点:
@_keyword nvarchar(100),--拆分的字符
@retid nvarchar(10),--主键
'@id=@id+convert(nvarchar,'+@retid+')'
可以知道@id的最大长度 = 30*1000 = 3000
4000足够有余,你说不够,不知道什么意思。
[解决办法]
是 30*100
最多100个id
[解决办法]
这个存储过程的功能可不可以在程序里实现,假如符合条件的记录有几千万条怎么处理。。。
[解决办法]
我短路了,不能这样推的。
你要返回id集合超过8000字节,2000没有适合的数据类型给你返回,只能以以表结果形式返回。
1、text/ntext,返回单行
2、varchar(8000)/nvarchar(4000),返回N行。
[解决办法]
-- 循环前建表
create table #rs (id int identity, ids varchar(8000))
-- 循环内判断@id长度,超过某个阀值插入#rs,重置@id
if datalength(@id)>7500
begin
insert #rs select substring(@id,1,len(@id)-1)
set @id = ''
end
-- 循环后处理
if @id<>''
begin
insert #rs select substring(@id,1,len(@id)-1)
end
-- 最后返回
select * from #rs
[解决办法]
[解决办法]
VARCHAR(MAX)对应TEXT类型
[解决办法]
前台一定要 1,2,3,4,... 这种形式么?个人觉得按照表来处理应该效率好点,并且方便。