动态拼接的sql 超过了4000,怎么办

sz_jack 2017-11-20 11:37:33
动态拼接的sql 超过了4000,怎么办

称名的变量
DECLARE @v_sql NVARCHAR(max);
调试发现长度为 4026

查看变量部分为显示,估计截取了
...全文
920 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
顺势而为1 2017-11-20
  • 打赏
  • 举报
回复
就象这样


if not object_id(N'Tempdb..#Tmp_Data') is null
    drop table #Tmp_Data
Go

Create table #Tmp_Data(Person_ID int identity(1,1),Person_Name nvarchar(100))

Insert #Tmp_Data
select N'张三' union all
select N'李四'
Go

Declare @sql  nvarchar(max)
SET @sql='Select * '
Declare @sql1 nvarchar(max)
SET @sql1=' From #Tmp_Data '

Exec (@sql+@sql1)

Person_ID   Person_Name
----------- ----------------------------------------------------------------------------------------------------
1           张三
2           李四


zbdzjx 2017-11-20
  • 打赏
  • 举报
回复
印象中,定义多个变量,存放不同的内容,最后执行时,再加到一起(不是先加到一起再执行)。
sz_jack 2017-11-20
  • 打赏
  • 举报
回复
保存的时候定义了,两个字段 select 部分 和 from 部分




select 出来也不完整
顺势而为1 2017-11-20
  • 打赏
  • 举报
回复
加多一个 DECLARE @v_sql1 NVARCHAR(max); 将@v_sql,@v_sql1 加在一起执行.
文盲老顾 2017-11-20
  • 打赏
  • 举报
回复
在查询分析器里查看超过4000字节的内容时,用select变量即可,这样从结果中粘贴出来的内容是完整的 比如 declare @sql nvarchar(max) select @sql = '' -- 拼接拼接 select @sql -- 从结果粘贴出来的内容是完整的 print @sql -- 显示结果的内容是截取的
sz_jack 2017-11-20
  • 打赏
  • 举报
回复
按照 appetizing_fish1 说的调了可以! sp_executesql 换成 Exec ,执行语气 Exec (@sql+@sql1)
xiaoxiangqing 2017-11-20
  • 打赏
  • 举报
回复
2000以后,就没有长度限制了

594

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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