0

我有一个很长的内联查询,即使我将 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'
4

1 回答 1

1

sp_executesql,@stmt 和 @params 参数需要 nvarchar

您的参数不必是 nvarchar。

请参见使用 varchar 参数调用 sp_executesql

如果您的 nvarchar(max) 被截断,则您连接错误。
请参阅For Nvarchar(Max) 我在 TSQL 中只得到 4000 个字符?为什么

sp_executesql 的重点是避免字符串构建:它允许您参数化固定查询以重用执行计划。为什么要连接来构建一个字符串?

于 2013-02-12T08:48:58.857 回答