操作大于8000个字符的VARCHAR变量

时间:2009-03-30 03:50:40

标签: sql-server

我在创建电子邮件正文的SQL Server 2005数据库上有一个存储过程。此过程的结果必须放在一个表中,该表具有用于以后处理的消息正文的TEXT字段。

我遇到的问题是,在某些情况下,要生成的电子邮件大于8000个字符。所以我无法在TEXT变量中构建消息体,因为SQL Server不允许TEXT类型的变量。我可以将电子邮件的各个部分累积到表变量中,但这样做不能解决问题,因为我无法将这些电子邮件部分一起附加到单个变量中以插入结果表中。

有没有办法(1)在内存中操作大于8000的实体,或者有(2)方法让我将(临时)表的字段中的值累积到文本字段中?

1 个答案:

答案 0 :(得分:5)

您可以使用SQL 2005中的NVARCHAR(max)或VARCHAR(max)数据类型来完成此任务。

  

大值数据类型的行为与较小的对应类型varchar,nvarchar和varbinary相似。这种相似性使SQL Server能够更有效地存储和检索大字符,Unicode和二进制数据。

     

对于大值数据类型,您可以使用早期版本的SQL Server中的text,ntext和image数据类型无法使用SQL Server。您可以定义可以存储大量数据的变量,最多2 ^ 31个字节的字符,二进制和Unicode数据。

http://msdn.microsoft.com/en-us/library/ms178158.aspx