我需要执行一个包含超过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)
,也会截断最后的字符。
答案 0 :(得分:5)
正如@NoDisplayName和@JeroenMostert在评论中所回答的那样,SP_EXECUTESQL将unicode字符串带到nvarchar(max),但PRINT语句会截断4,000个unicode字符或8,000个非unicode。
如果您想要查看比PRINT更多的动态查询,那么您可以使用SELECT代替。您可能需要更新查询选项以显示更长的值输出。
答案 1 :(得分:0)
愚蠢的问题,我正在打印结果而不是直接执行。