动态语句的长度已经超过了nvarchar的最大4000字符限制,怎么办啊?

mastererp 2004-11-08 01:46:22
我用sp_executesql调用一个动态语句,可是语句太长了,已经超过了存放的字段类型nvarchar的最大长度4000,应该怎么解决啊?
sp_executesql好像不接受多个变量组成一个SQL语句
...全文
438 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ORARichard 2004-11-08
  • 打赏
  • 举报
回复
这么长的sql语句,也有点夸张了吧。建议楼主把你这个sql语句所要执行用途说出来,可能会有比这个动态的sql更好的解决方法。
liushengni 2004-11-08
  • 打赏
  • 举报
回复
ding
mastererp 2004-11-08
  • 打赏
  • 举报
回复
exec(@str1 + @str2 + @str3 ...)也不行,还是会自动截取前4000个,似乎传递给EXEC的参数就是nvarchar类型
mastererp 2004-11-08
  • 打赏
  • 举报
回复
如果用varchar(8000)的话,长度是够了,可是里面的中文都变成问号了,我的collation是Latin字符,用Unicode的nvarchar可以,varchar就不行了
mastererp 2004-11-08
  • 打赏
  • 举报
回复
我的意思是sp_executesql不接受动态语句是由"+"连接起来的情况,譬如
sp_executesql @SQL1+@SQL2
haoK 2004-11-08
  • 打赏
  • 举报
回复
数据类型的限制呀,没办法,

改用exec(@str1 + @str2 + @str3 ...)的形式行吗?

Andy__Huang 2004-11-08
  • 打赏
  • 举报
回复
declare @sql1 varchar(8000),@sql2 varchar(8000)........
set @sql1 ='select col1....'
set @sql2 ='select col1....'

exec(@sql1+@sql2)
fxcl2006 2004-11-08
  • 打赏
  • 举报
回复
换做varchar(8000)够吗?
mgsray 2004-11-08
  • 打赏
  • 举报
回复
楼主这个动态语句也太动态了吧,4000还不够...
sp_executesql可以接受多个变量的,具体看看联机帮助

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧