SQL Server 2000 varchar(8000)截断为256?

时间:2010-10-31 17:01:40

标签: sql-server-2000 varchar

我有SQL Server 2000,我的存储过程@outputvarchar(8000) 我有一个循环,将结果连接到@output,最后我做了select @output

我的问题是输出长度只被截断为前256个字符!缺少其他字符(输出)。

我尝试使用TEXT代替varchar但我收到了错误

  

text,ntext和image数据类型   对局部变量无效。

非常感谢任何想法

提前致谢

3 个答案:

答案 0 :(得分:3)

我打赌你正在使用查询分析器。如果你这样做,很可能这是一个设置问题。在查询分析器选项中,尝试查找每列中显示的最大字符数的设置,将其设置得更高,例如设置为8000.

答案 1 :(得分:1)

似乎这是对SQL连接的访问​​方法的限制。 MS SQL查询分析器说这样的功能有效......

示例程序:

create procedure xTestPtoc 
  @InParam varchar(4000), @OutParam varchar(8000) out
as
  set @OutParam = @InParam + @InParam
go

致电代码:

declare @InParam varchar(4000)
declare @i int
declare @OutParam varchar(8000)

select @i = 1270, @InParam = '', @OutParam = ''

while (@i > 0)
  select @InParam = @InParam + convert(varchar(10), @i), @i = @i - 1

select len(@InParam), @InParam

exec xTestPtoc @InParam, @OutParam out

select len(@OutParam), @OutParam

示例代码执行的结果(当然,我跳过变量的完整输出):

----------- ---------------
3973        127012691268...
(1 row(s) affected)

----------- ---------------
7946        127012691268...
(1 row(s) affected)

答案 2 :(得分:0)

默认情况下,旧数据访问libs(如带有ODBC列的ADO)会截断256个字符。要获得超过256个字符,您可以调用GetChunk之类的特殊方法:http://msdn.microsoft.com/en-us/library/ms681747(v=VS.85).aspx