如何在NVARCHAR(MAX),sql Server 2005中设置超过最大大小的字符

时间:2009-08-11 10:53:59

标签: sql sql-server-2005 tsql

我正在使用

声明@insertsql nvarchar(MAX)

- @insertsql上面的sp_executesql只接受nvarchar作为输入

设置@insertsql =' - 我在这里给出超过10000个字符-----'

EXEC sp_executesql @insertsql,N'@ inXMLRequest XML OUTPUT',@ inXMLRequest OUTPUT

如何在sql server2005中的NVARCHAR(MAX)中插入超过10000个字符

任何人都可以帮助

提前致谢

4 个答案:

答案 0 :(得分:0)

当我使用内联SQL语句而不是存储过程时,发生了这种情况。

如果您达到上限,您可能需要考虑转移到存储过程。

答案 1 :(得分:0)

感谢All,

我得到了答案

直接使用SP_Executesql我们执行nvarchar变量

上面我们正在准备@insertsql nvarchar变量超过8000个字符,它就像这样给sp_executesql

EXEC sp_executesql @insertsql,N'@ inXMLRequest XML OUTPUT',@ inXMLRequest OUTPUT

将以上查询的内容替换为以下查询

Exec('DeClare @inXMLRequest XML SET @inXMLRequest ='------ 8000个以上的字符---')

最后,我们将执行该nvarchar字符串并退出

答案 2 :(得分:0)

用于命令在sp_executesql(在您的情况下为@insertsql)中运行的参数是NVARCHAR(4000)而不是NVARCHAR(MAX),因此您只能使用4000个字符的动态SQL命令。

如果变量中的空间不足,则需要进行一些代码重新分解。

答案 3 :(得分:0)

sp_executesql将接受一个长度超过4000的NVARCHAR(MAX),但不能一次全部分配。需要在单个赋值语句中为其分配4000个字符,然后如下所示进行追加:

declare @strSQL nvarchar(max)
--@strSQL + REPLICATE(' ', 5000)+' ''ERROR!'''
--exec sp_executesql @strSQL 
SET @strSQL = N'SELECT'+ REPLICATE(' ', 3000)
SET @strSQL = @strSQL + REPLICATE(' ', 3000)+' ''This works'''
exec sp_executesql @strSQL
select LEN (@strSQL)