我正在使用
声明@insertsql nvarchar(MAX)
- @insertsql上面的sp_executesql只接受nvarchar作为输入
设置@insertsql =' - 我在这里给出超过10000个字符-----'
EXEC sp_executesql @insertsql,N'@ inXMLRequest XML OUTPUT',@ inXMLRequest OUTPUT
如何在sql server2005中的NVARCHAR(MAX)中插入超过10000个字符
任何人都可以帮助
提前致谢
答案 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)