存储过程的返回值不能超过256,请教有什么办法加长

fionazou 2011-06-16 04:08:54
我写了一个存储过程

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

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


发现其返回的结果超过了256后余下的就不返回,请教大家有什么好办法解决。谢谢!
...全文
232 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
fionazou 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 xyctc 的回复:]
SQL code

select @lcErrMsg=''
print @lcErrMsg
select @lcErrMsg=.....
print @lcErrMsg
[/Quote]
我是将@lcErrMsg=@lcErrMsg+‘.....’串起来作为一个结果返回的。超过了256后的被截断了。
Billy 2011-06-17
  • 打赏
  • 举报
回复
select @lcErrMsg=''
print @lcErrMsg
select @lcErrMsg=.....
print @lcErrMsg
fionazou 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 fionazou 的回复:]
引用 8 楼 fredrickhu 的回复:
引用 7 楼 vivai2010 的回复:
是查询分析器显示的问题
sql 2000下设置如下:
工具-选项-结果-每列最多字符数 设置一下就行了

应该就是这个问题


修改了这个值还是不行啊
[/Quote]
超过256后的字被截断了,请教大家了。
fionazou 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fredrickhu 的回复:]
引用 7 楼 vivai2010 的回复:
是查询分析器显示的问题
sql 2000下设置如下:
工具-选项-结果-每列最多字符数 设置一下就行了

应该就是这个问题
[/Quote]

修改了这个值还是不行啊
fionazou 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jamespanjunwei 的回复:]
Management Studio->工具->选项->查询结果->SQL Server->以网格显示结果->检索的最多字符数
->非XML数据:这个值决定了查询返回显示的字数,超过的被截断
[/Quote]
非XML数据 :65535 这个数据好像改不了啊,它是什么单位的?
-晴天 2011-06-17
  • 打赏
  • 举报
回复
以网格显示,然后,选中所显示的网格,复制,再粘贴到记事本里,你就可以看到全部内容.
老潘 2011-06-17
  • 打赏
  • 举报
回复
Management Studio->工具->选项->查询结果->SQL Server->以网格显示结果->检索的最多字符数
->非XML数据:这个值决定了查询返回显示的字数,超过的被截断
水族杰纶 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fionazou 的回复:]
引用 8 楼 fredrickhu 的回复:
引用 7 楼 vivai2010 的回复:
是查询分析器显示的问题
sql 2000下设置如下:
工具-选项-结果-每列最多字符数 设置一下就行了

应该就是这个问题

我的是SQL SERVER 2005
[/Quote]
方法一样
fionazou 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fredrickhu 的回复:]
引用 7 楼 vivai2010 的回复:
是查询分析器显示的问题
sql 2000下设置如下:
工具-选项-结果-每列最多字符数 设置一下就行了

应该就是这个问题
[/Quote]
我的是SQL SERVER 2005
cd731107 2011-06-17
  • 打赏
  • 举报
回复
前面的设置完成了,需不需要重启sql服务
xuam 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 fredrichku 的回复:]
odbc接口问题吧
在Management Studio应该返回全部的
[/Quote]
应该是直连的问题,ODBC没这个问题.
fredrichku 2011-06-17
  • 打赏
  • 举报
回复
odbc接口问题吧
在Management Studio应该返回全部的
Billy 2011-06-17
  • 打赏
  • 举报
回复
没这个可能,是不是你接收时定义字串长度有问题或存储过程有问题,贴出代码和调用代码
declare @s varchar(8000)
exec p,'',@s output
select @s,len(@s)
--小F-- 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 vivai2010 的回复:]
是查询分析器显示的问题
sql 2000下设置如下:
工具-选项-结果-每列最多字符数 设置一下就行了
[/Quote]
应该就是这个问题
vivai2010 2011-06-16
  • 打赏
  • 举报
回复
是查询分析器显示的问题
sql 2000下设置如下:
工具-选项-结果-每列最多字符数 设置一下就行了
fionazou 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fionazou 的回复:]
引用 1 楼 xuam 的回复:
SQL code

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

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

使用TEXT也是不行的。
因为我要串一些字符,例如

@lcErrMsg=cast(@lcErrMsg as varchar(8000))+'出错,需继续检查'
[/Quote]
fionazou 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xuam 的回复:]
SQL code

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

select @lcErrMsg=''
......
select @lcErrMsg=.....
[/Quote]
使用TEXT也是不行的。
xuam 2011-06-16
  • 打赏
  • 举报
回复
sybase直连有这种情况,换一种连接方式就行了,你试试ODBC连一下
playwarcraft 2011-06-16
  • 打赏
  • 举报
回复
是你显示的问题吧
设一下
chuanzhang5687 2011-06-16
  • 打赏
  • 举报
回复
存储过程的值不能超过256?
加载更多回复(1)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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