Sql server SQL Server打印的数据长度不超过8000

Sql server SQL Server打印的数据长度不超过8000,sql-server,Sql Server,以下代码在SQL server 2012中返回的字符不超过8000个。是否有可能打印8000个字符以上的字符 DECLARE @SQL VARCHAR(MAX) SET @SQL = '' SELECT @SQL = @SQL + CAST('SELECT * FROM ' + TableName AS VARCHAR(MAX)) FROM Table1 PRINT(@SQL) 尝试: etc我认为问题在于如何插入数据。通过下面的表格创建和插入,我能够获得8001个字符,并与您的代

以下代码在SQL server 2012中返回的字符不超过8000个。是否有可能打印8000个字符以上的字符

DECLARE @SQL VARCHAR(MAX)
SET @SQL = ''

SELECT @SQL = @SQL + CAST('SELECT * FROM ' + TableName  AS VARCHAR(MAX)) 
  FROM Table1

PRINT(@SQL)
尝试:


etc

我认为问题在于如何插入数据。通过下面的表格创建和插入,我能够获得8001个字符,并与您的代码一起返回

Drop Table #Test
Create Table #Test (Test Varchar(Max))
Insert #Test Values (Convert(Varchar(Max),Space(7999)) + 'xy')

Select * From #Test

DECLARE @TableName VARCHAR(MAX) = '#Test'
DECLARE @SQL VARCHAR(MAX) SET @SQL = ''

SELECT @SQL = @SQL + CAST('SELECT Test FROM ' + @TableName AS VARCHAR(MAX)) FROM #Test

PRINT(@SQL)

注意插入时如何将值转换为varchar(max)。

我认为问题在于内部
SELECT
语句。您是否可以选择并强制转换单个列,而不是尝试强制转换
select*
?这实际上是SSMS中的一个限制。请参阅answerTry to use EXEC(“--此处为您的sql脚本”)@TimBiegeleisen最终结果应该是表table1的TableName列中存在的所有表的select查询列表。上面的代码最多打印8000个字符,最后部分打印select查询。我只使用表1中的一列。你能说清楚一点吗?你能告诉我你查询print len(@sql)的结果是什么吗?谢谢你,彼得。该问题仅在打印时出现。但是当我放入EXEC(@SQL)时,所有的内容都被执行了。彼得?:)你的问题是关于印刷的,所以我的答案是关于印刷的。这是打印所需内容的一种方法。
Drop Table #Test
Create Table #Test (Test Varchar(Max))
Insert #Test Values (Convert(Varchar(Max),Space(7999)) + 'xy')

Select * From #Test

DECLARE @TableName VARCHAR(MAX) = '#Test'
DECLARE @SQL VARCHAR(MAX) SET @SQL = ''

SELECT @SQL = @SQL + CAST('SELECT Test FROM ' + @TableName AS VARCHAR(MAX)) FROM #Test

PRINT(@SQL)