存储过程返回值被截断问题,请求帮助

fionazou 2011-06-17 11:02:26
我写了一个存储过程

CREATE PROCEDURE [dbo].[p]
@lcPdctno char(9),
@lcErrMsg varchar(8000) output AS

select @lcErrMsg=''
......
select @lcErrMsg=.....


发现其返回的结果超过了256后余下的被截断了,请教大家有什么好办法解决。谢谢!
...全文
110 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fionazou 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fredrichku 的回复:]
在查询分析器一般设置是只返回256字符的,造成假象,你这么验证


SQL code

declare @lcErrMsg varchar(8000)

exec [dbo].[p] '参数1',@lcErrMsg output
print len(@lcErrMsg)
[/Quote]\
谢谢你的建议,我刚试了下,在查询分析器里执行后都显示全了,可为什么从VFP里得到这个结果时就被截取了呢?
anbam 2011-06-17
  • 打赏
  • 举报
回复
存储过程写的有问题吧,是不是某个中间变量长度不够?
fredrichku 2011-06-17
  • 打赏
  • 举报
回复
在查询分析器一般设置是只返回256字符的,造成假象,你这么验证

declare @lcErrMsg varchar(8000)

exec [dbo].[p] '参数1',@lcErrMsg output
print len(@lcErrMsg)
AcHerat 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 fionazou 的回复:]
我写了一个存储过程

CREATE PROCEDURE [dbo].[p]
@lcPdctno char(9),
@lcErrMsg varchar(8000) output AS

select @lcErrMsg=''
......
select @lcErrMsg=.....


发现其返回的结果超过了256后余下的被截断了,请教大家有什么好办法解决。谢谢!
[/Quote]

你看下你存储过程里是不是全是
select @lcErrMsg = '...'
这样子是重定义,没有将所有的字符串拼接起来
select @lcErrMsg = isnull(@lcErrMsg,'') + '...'
--小F-- 2011-06-17
  • 打赏
  • 举报
回复
是不是本身的设置问题?

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧