我需要在nvarchar变量中设置9000个字符
declare @inXMLRequest xml
declare @insertsql nvarchar(max)
set @insertsql='--------9000 characters--------'
EXEC sp_executesql @insertsql,
N'@inXMLRequest XML OUTPUT',
@inXMLRequest OUTPUT
print @insertsql
但NVARCHAR只占用5000个字符 如何在NVARCHAR变量中设置9000个字符?
答案 0 :(得分:1)
如果您编写一个在管理工作室外尝试相同操作的小程序,您将能够执行此操作。
遗憾的是,出于某种原因,在管理工作室中使用insert语句无法做到这一点。您对管理工作室的内容有4k的限制。
我以前有人插入,即首先插入4k字符然后插入下一个4k字符等
答案 1 :(得分:1)
我不确定,但你不能在varchar中存储这么长的行。 一行必须适合db-page。 varchar字段存储在存储行的同一页面中。 页面通常小于8192字节(取决于db-system)
有一些例外,例如blob字段,它们没有存储在一行的同一页面中。
你应该使用其他数据类型,如text / blob / image。
nvarchar 9000是顺便说一句。不可能这将分配18000字节不适合页面。 这就是4000字符限制的原因。
答案 2 :(得分: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='------above 8000 characters---')
最后,我们将执行该nvarchar字符串并退出