日期:2014-05-19  浏览次数:20472 次

关于output的长度问题
在存储过程中定义了一个output参数@temp为varchar(max)
但是在测试时候发现返回的长度始终为131072
请问这是为什么?
当然,在存储过程中涉及到@temp的运算都已经cast为varchar(max)了~

------解决方案--------------------
跟踪调试一下
------解决方案--------------------
为什么不使用Text类型作为输入参数类型呢.
------解决方案--------------------
varchar(max)最大的长度为8000
------解决方案--------------------
varchar(max)可以达到2G。
------解决方案--------------------
Microsoft SQL Server 2005 中引入了 max 说明符。此说明符增强了 varchar、nvarchar 和 varbinary 数据类型的存储能力。varchar(max)、nvarchar(max) 和 varbinary(max) 统称为大值数据类型。您可以使用大值数据类型来存储最大为 2^31-1 个字节的数据。
------解决方案--------------------
和那个没关系。。。。。
有多长就返回多长~~~为什么你觉得不应该是那个长度呢??
declare @a varchar(max)
set @a=replicate(cast( 'a ' as varchar(max)),10000)
select len(@a)
------解决方案--------------------
都是网上找的例子~~LZ提问前应该去搜搜。。。。
------解决方案--------------------
create table p_ww
@a varchar(max) output
as
set @a=replicate(cast( 'a ' as varchar(max)),231072)

declare @a varchar(max)
exec p_ww @a output
print len(@a)

--我没2005~