【发布时间】:2011-06-17 12:58:28
【问题描述】:
所以我在 MS SQL Server 2008 中编写了一个存储过程。这是一个非常长的查询,我必须动态编写它,所以我创建了一个名为 @Query 的变量并将其设为 NVARCHAR(MAX) 类型。现在,告诉我,在现代版本的 SQL Server 中,NVARCHAR(MAX) 可以容纳大量的数据,远远超过最初的 4000 个字符的最大值。但是,当我尝试将其打印出来时,@Query 仍会被截断为 4000 个字符。
DECLARE @Query NVARCHAR(max);
SET @Query = 'SELECT...' -- some of the query gets set here
SET @Query = @Query + '...' -- more query gets added on, etc.
-- later on...
PRINT LEN(@Query) -- Prints out 4273, which is correct as far as I can tell
PRINT @Query -- Truncates value to 4000 characters
EXEC sp_executesql @Query -- totally crashes due to malformed (truncated) query
是我做错了什么,还是我对 NVARCHAR(MAX) 的工作方式完全错误?
【问题讨论】:
-
NVARCHAR(MAX) 从不有 4000 个字符的限制.....
-
也遇到过在 SQL Server 2019 中使用 NVARCHAR(MAX) 将字符串参数截断为 4270 个字符的问题
标签: sql sql-server-2008 dynamic-sql