我有一个非常长的内联查询,即使我将nvarchar属性设置为MAX,文本也会被截断。有没有办法让sp_executesql改为使用varchar。
当我尝试将nvarchar更改为varchar时,我收到错误,我也尝试了ntext但结果相同。
编辑:
基于我在答案上发布的问题所读到的内容,这应该有用,但任何人都不能告诉我为什么?
Declare @X varchar(MAX)
SET @X = N'Select * From Users'
Execute sp_executesql @X
虽然这没有问题:
Execute sp_executesql N'Select * From Users'
答案 0 :(得分:1)
没有。 sp_executesql
要求nvarchar用于@stmt和@params参数
您的参数不必是nvarchar。
请参阅Call sp_executesql with varchar parameter
如果您的nvarchar(max)被截断,则表示连接错误 请参阅For Nvarchar(Max) I am only getting 4000 characters in TSQL?了解原因
sp_executesql的目的是避免字符串构建:它允许您参数化固定查询以重复执行计划。为什么要连接构建一个字符串?