还是sql 2005好啊,据说没有 varchar 8000的限制。 郁闷死了,exec 执行拼接的sql语句好像有问题啊?
print(@sqlBegin +@sql+ @sql1 + @sql2 + @sql3 + @sql4 + @sql5 + @sql6 + @sql7 + @sql8 + @sql9 + @sqlEnd) 我print出来语句是正确的, exec( @sqlBegin + @sql1 + @sql2 + @sql3 + @sql4 + @sql5 + @sql6 + @sql7 + @sql8 + @sql9 + @sqlEnd )
可是exec 执行 发现结果集的数据列 总是漏掉几个, 我试验:
(1) len(sql1) >2000,就付给 sql2,如此类推; (2)len(sql1) >3000,就付给 sql2,如此类推; (1)和(2)判断条件(>2000,>3000),
和我期待的一样,print 得到的语句是一样的,我把print输出的语句 粘贴到 sql查询分析器中 执行是正确的 ;
然而用
exec( @sqlBegin + @sql1 + @sql2 + @sql3 + @sql4 + @sql5 + @sql6 + @sql7 + @sql8 + @sql9 + @sqlEnd )
(1)和(2)得到的结果集的数据列的个数竟然不一样,而且都少于我想要的列数。 完全没辙了, 请问各位大侠,除了用多个varchar 拼接sql,还有什么办法可以解决 动态sql长度> 8000 的问题??? 谢谢各位大侠!!!!!!!!
print(@sqlBegin +@sql+ @sql1 + @sql2 + @sql3 + @sql4 + @sql5 + @sql6 + @sql7 + @sql8 + @sql9 + @sqlEnd) 我print出来语句是正确的, exec( @sqlBegin + @sql1 + @sql2 + @sql3 + @sql4 + @sql5 + @sql6 + @sql7 + @sql8 + @sql9 + @sqlEnd )
可是exec 执行 发现结果集的数据列 总是漏掉几个, 我试验:
(1) len(sql1) >2000,就付给 sql2,如此类推; (2)len(sql1) >3000,就付给 sql2,如此类推; (1)和(2)判断条件(>2000,>3000),
和我期待的一样,print 得到的语句是一样的,我把print输出的语句 粘贴到 sql查询分析器中 执行是正确的 ;
然而用
exec( @sqlBegin + @sql1 + @sql2 + @sql3 + @sql4 + @sql5 + @sql6 + @sql7 + @sql8 + @sql9 + @sqlEnd )
(1)和(2)得到的结果集的数据列的个数竟然不一样,而且都少于我想要的列数。 完全没辙了, 请问各位大侠,除了用多个varchar 拼接sql,还有什么办法可以解决 动态sql长度> 8000 的问题??? 谢谢各位大侠!!!!!!!!
exec( @sqlBegin + @sql1 + @sql2 + @sql3 + @sql4 + @sql5 + @sql6 + @sql7 + @sql8 + @sql9 + @sqlEnd )
不好意思,好像是我漏掉了一个
原因好像找到了
搞了一上午,终于解决了,哈哈,多谢各位大侠!!!分数不多,不好意思啊