2010-10-31 76 views
2

我有SQL Server 2000和我有了一个存储过程@output作为varchar(8000) 和我有一个循环,保持结果连接成@output,并在年底我做了select @outputSQL Server 2000 varchar(8000)截断为256?

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

我试图用TEXT,而不是varchar,但我得到一个错误

文本,ntext和图像数据类型 是局部变量无效。

任何想法是高度赞赏提前

+1

需要向我们显示代码。并接受一些你以前的问题的答案 – gbn 2010-10-31 17:07:47

回答

3

我敢打赌,你正在使用的查询分析器此

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

+0

事实上,我得到了使用PHP代码执行SP的结果相同后,查询分析器! – Alaa 2010-10-31 17:41:29

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)