我在存储过程中创建了一个动态查询,当我尝试打印该动态查询时,它只打印整个查询的一部分。
保存整个动态查询的变量声明如下
DECLARE @SQL NVARCHAR(MAX)
当我打印变量的长度如下所示时,它给出了整个查询的长度,这很好。
PRINT LEN(@SQL)
但是,当我打印脚本本身时,它只打印整个查询的一部分。
PRINT @SQL
我也尝试打印它,如下所示
PRINT CONVERT(NVARCHAR(MAX),@SQL)
为什么它只打印4000张?我究竟做错了什么?
答案 0 :(得分:7)
你没有做错任何事。 “打印”命令仅限于输出4000个字符(有关详细信息,请参阅BOL - 联机丛书)。这并不意味着nvarchar(max)缩小到4000个字符。
答案 1 :(得分:2)
PRINT限制为4000个字符,而不是NVARCHAR(MAX)变量。
如果你想输出所有内容,解决方法就是使用你的字符串这样的PRINT BIG函数。
https://www.richardswinbank.net/doku.php?id=tsql:print_big
您也可以选择不受限制的变量,并从结果中复制内容。
答案 2 :(得分:1)
尝试如下打印整个字符串,
SET @Query = 'SELECT ....' [Up To 4,000 characters, then rest of statement as below]
SET @Query = @Query + [rest of statement]
Now run your query as normal i.e. EXEC ( @Query )
从以下链接获得答案