最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

如何解决动态查询语句太长,大于数据库字符的最大长度

来源:懂视网 责编:小采 时间:2020-11-09 08:08:50
文档

如何解决动态查询语句太长,大于数据库字符的最大长度

如何解决动态查询语句太长,大于数据库字符的最大长度:上周,在写sql server2005 数据库 存储过程的时候,用到了 动态 查询 语句 ,但是由于 语句 太长,定义的变量最长为varchar(8000),在 字符 串 大于 8000的时候, 数据库 会做截断,进而在执行 动态 语句 时报错。 未 解决 此问题,找到了定义变量的 长度
推荐度:
导读如何解决动态查询语句太长,大于数据库字符的最大长度:上周,在写sql server2005 数据库 存储过程的时候,用到了 动态 查询 语句 ,但是由于 语句 太长,定义的变量最长为varchar(8000),在 字符 串 大于 8000的时候, 数据库 会做截断,进而在执行 动态 语句 时报错。 未 解决 此问题,找到了定义变量的 长度

上周,在写sql server2005 数据库 存储过程的时候,用到了 动态 查询 语句 ,但是由于 语句 太长,定义的变量最长为varchar(8000),在 字符 串 大于 8000的时候, 数据库 会做截断,进而在执行 动态 语句 时报错。 未 解决 此问题,找到了定义变量的 长度 var

上周,在写sql server2005数据库存储过程的时候,用到了动态查询语句,但是由于语句太长,定义的变量最长为varchar(8000),在字符串大于8000的时候,数据库会做截断,进而在执行动态语句时报错。


未解决此问题,找到了定义变量的长度varchar(max),基本语句如下:


declare

@v_cmdstr1 varchar(max)
,@v_cmdstr2 varchar(8000)


set @v_cmdstr1='select row_number()over (order by a.i_branch_no,a.vc_no) rn
,a.i_branch_no,b.bname as branch_name,a.vc_no
,c.vc_name,a.i_begin_date,a.i_end_date'
select @v_cmdstr1=@v_cmdstr1+',sum(case when a.c_relate_type='+convert(char(5),c_relate_type)
+' and a.vc_pro_code='+convert(varchar(32),vc_pro_code)
+' and a.vc_item_code='+convert(varchar(32),vc_item_code)
+' then isnull(a.en_occur_balance,0) else 0 end) as '+title_name
from (select top 500 c_relate_type,vc_pro_code,vc_item_code,title_name
from #check) t
set @v_cmdstr2=' into ##transitem from ##checkit a
left join seclose..branch b on a.i_broker_no=b.bid
left join sm..tb_operators c on a.vc_no = c.vc_no
group by a.i_branch_no,b.bname,a.vc_no
,c.vc_name,a.i_begin_date,a.i_end_date'
exec(@v_cmdstr1+@v_cmdstr2);


理论上,将变量 @v_cmdstr1 定义为 varchar(max)之后,最大字符串可为2G,但是我一开始没有定义@v_cmdstr2,就用了一个变量@v_cmdstr1,但是执行完之后发现数据库报错。之后对动态查询语句做了截断,动态部分用变量@v_cmdstr1 ,静态部分用了@v_cmdstr2,再执行就不报错了。但其实这时@v_cmdstr1 的长度仍然是>8000的,可见最大字符串可为2G并不是适用于所有场合。


沧海拾贝

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

如何解决动态查询语句太长,大于数据库字符的最大长度

如何解决动态查询语句太长,大于数据库字符的最大长度:上周,在写sql server2005 数据库 存储过程的时候,用到了 动态 查询 语句 ,但是由于 语句 太长,定义的变量最长为varchar(8000),在 字符 串 大于 8000的时候, 数据库 会做截断,进而在执行 动态 语句 时报错。 未 解决 此问题,找到了定义变量的 长度
推荐度:
标签: 查询 数据 如何
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top