我有SQL Server 2000,我的存储过程@output
为varchar(8000)
我有一个循环,将结果连接到@output
,最后我做了select @output
我的问题是输出长度只被截断为前256个字符!缺少其他字符(输出)。
我尝试使用TEXT
代替varchar
但我收到了错误
text,ntext和image数据类型 对局部变量无效。
非常感谢任何想法
提前致谢
答案 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