6

我有下一个问题:

--DECLARE @TEST NVARCHAR(MAX)
--DECLARE @TEST2 NVARCHAR(MAX)

DECLARE @TEST NTEXT
DECLARE @TEST2 NTEXT

NVARCHAR(MAX) 对于执行存储过程时需要放置的文本量来说太小了,此外,TEXT、NTEXT 和 IMAGE 数据类型对局部变量无效,我能做些什么来回避这个问题并存储过大的文本像。

提前致谢

4

1 回答 1

14

NVARCHAR(MAX)对于执行存储过程时需要放置的文本量来说太小了

好吧,坏消息:这是可用的最大数据类型!2GB的存储空间,没有比这更多的东西了。事实上,所有大型类型都具有相同的大小:VARCHAR(MAX)、NVARCHAR(MAX)、VARBINARY(MAX):它们都具有 2GB 的最大大小(作为旁注,已弃用的旧类型具有完全相同的最大大小)。只有 FILESTREAM 可以超过此大小,但不能将变量声明为 FILESTREAM。

所以这真的引出了一个问题:你在存储过程中做了什么来在变量中添加 +2GB 的数据?你不可能有合理的理由,所以你应该重新考虑你的方法。使用磁盘,卢克,而不是 RAM!考虑一个@table 变量或一个#temp 表...

于 2012-10-30T09:57:48.500 回答