需要执行超过4k char的动态SQL查询

时间:2015-02-24 10:57:29

标签: sql sql-server

我需要执行一个包含超过4000个字符的SQL查询。

我正在使用以下代码执行此操作:

create Table #sqlquery (querystring nvarchar(MAX))

declare @len nvarchar (MAX)

insert into #sqlquery (querystring) values('select * from TableA')
insert into #sqlquery (querystring) values('Where ID =3')

SELECT TOP 1  
   @len = STUFF ( ( SELECT ' ' + r.querystring  FROM #sqlquery AS r  FOR XML PATH(''), TYPE).value('.[1]','nvarchar(max)'), 1,1,'' )FROM #sqlquery

exec sp_executesql  @len

即使我定义了nvarchar(max),也会截断最后的字符。

2 个答案:

答案 0 :(得分:5)

正如@NoDisplayName和@JeroenMostert在评论中所回答的那样,SP_EXECUTESQL将unicode字符串带到nvarchar(max),但PRINT语句会截断4,000个unicode字符或8,000个非unicode。

如果您想要查看比PRINT更多的动态查询,那么您可以使用SELECT代替。您可能需要更新查询选项以显示更长的值输出。

答案 1 :(得分:0)

愚蠢的问题,我正在打印结果而不是直接执行。