make sp_executesql取varchar而不是nvarchar?

时间:2013-02-12 08:29:29

标签: sql-server-2008

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

1 个答案:

答案 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的目的是避免字符串构建:它允许您参数化固定查询以重复执行计划。为什么要连接构建一个字符串?