CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

求各位帮忙看一下,这个返回字符串的存储过程哪儿有问题

楼主nicemood(冰度咖啡)2005-10-09 14:54:41 在 MS-SQL Server / 基础类 提问

存储过程如下,老是调试不成功!!  
   
  请问,当通过程序提供@project_bh给SP后,如何取得@s2的返回字符串呢  
   
   
   
  Create   Procedure   get_grade  
   
  @s2       varchar(600)     output,  
  @project_bh   as   varchar(10)  
   
   
  AS  
   
  Declare   @s1     varchar(200),  
                  @count   as   int  
   
  select   @count=count(*)   from   Content_info   where   project_bh=@project_bh    
   
  while   @count>0  
   
  begin  
   
  select   @s1=bid_title+'('+bid_bh+');'     from     Content_info   where   project_bh=@project_bh  
  set   @count=@count-1  
   
  end  
   
  SET   @s2=@s2+@s1  
   
  Return   0  
   
  GO  
   
   
  问题点数:100、回复次数:12Top

1 楼zlp321002(Life Is Good,Let's Shine)回复于 2005-10-09 15:01:35 得分 10

--存储过程调用及获取返回值,参考:  
  http://blog.csdn.net/zlp321002/archive/2005/06/22/400705.aspxTop

2 楼WangZWang(先来)回复于 2005-10-09 15:02:22 得分 10

--   执行查看结果  
  declare   @s2   varchar(600),  
                  @project_bh   as   varchar(10)  
   
  set   @project_bh='?'  
  exec   get_grade   @s2   out,@project_bh  
     
  select   @s2Top

3 楼scmail81(琳·风の狼(修罗))回复于 2005-10-09 15:02:35 得分 10

set   @S1=''Top

4 楼rivery(river)回复于 2005-10-09 15:06:27 得分 10

--在sql中调用  
  declare   @project_bh   varchar(10),@c   varchar(600)  
  select   @project_bh='xxxxx'  
  exec   get_grade   @c   output,@project_bh  
  select   @cTop

5 楼scmail81(琳·风の狼(修罗))回复于 2005-10-09 15:09:30 得分 10

sorry   看错了Top

6 楼nicemood(冰度咖啡)回复于 2005-10-09 15:28:10 得分 0

返回NULL  
   
  是错的....郁闷Top

7 楼nicemood(冰度咖啡)回复于 2005-10-09 15:31:07 得分 0

create     Procedure   get_grade  
   
   
  @grade       varchar(600)     output,  
  @Company_id   int  
   
   
  AS  
   
  Declare   @s1     varchar(200),  
                  @count   as   int  
   
  select   @count=count(*)   from   grade_info   where   Company_id=@Company_id    
   
  while   @count>0  
  begin  
  select   @s1=Grade+';'     from     grade_info   where   Company_id=@Company_id    
   
   
   
  set   @count=@count-1  
   
  end  
   
  SET   @grade=@grade+@s1  
   
  Return   0  
   
   
  GO  
   
   
   
  _______________________________________________________________________  
   
   
  declare   @grade   varchar(600),  
                  @Company_id   int  
   
  set   @Company_id='4'  
   
  exec   get_grade   @grade   out,@company_id  
     
  select   @grade  
   
  ________________________________________________________________  
   
  返回空  
   
  _____________________________________________________________  
   
  select   s1=Grade+';'     from     grade_info   where   Company_id=4  
   
   
  s1得出两行值.....  
   
   
   
   
   
   
  ????????????????????????Top

8 楼rivery(river)回复于 2005-10-09 16:00:25 得分 10

--请楼主检查这个是否能满足你的意思。  
  create     Procedure   get_grade  
  @grade       varchar(600)     output,  
  @Company_id   int  
  AS  
  select   @grade   =''--**************这里增加  
  select   @grade   =@grade   +';'+Grade     from     grade_info   where   Company_id=@Company_id    
  select   @grade=stuff(@grade,1,1,'')  
  Return    
   
  GOTop

9 楼rivery(river)回复于 2005-10-09 16:02:50 得分 10

1。原来的变量没有赋初值,所以是空,和任何字符相加都为空。  
  2。使用的那个循环得到的是最后一个行的grade值+;,应该不是你的本意。  
  所以重新修改了过程。Top

10 楼put2006(冷眼螃蟹)回复于 2005-10-09 17:01:52 得分 10

@s2是空的,而且每次select   @s1=bid_title+'('+bid_bh+');'   都附同一个值Top

11 楼nicemood(冰度咖啡)回复于 2005-10-10 10:58:33 得分 0

cteate   Procedure   get_grade  
   
   
  @grade       varchar(600)     output,  
  @Company_id   int  
   
   
  AS  
   
  select   @grade   =''  
  Declare     @count   as   int,  
  @s1   varchar(200)  
  select   @count=count(*)   from   grade_info   where   Company_id=@Company_id    
   
   
  while   @count>0  
   
  begin  
  select   @s1=Grade+';'     from     grade_info   where   Company_id=@Company_id    
  set   @count=@count-1  
  SET   @grade=@grade+@s1  
  end  
  Return    
   
   
  这个可以执行,并且输出也行,但是输邮始终是第一条记录相连,记录没有循环  
   
   
   
  GOTop

12 楼rivery(river)回复于 2005-10-10 11:25:42 得分 20

你这样循环是没有意义的。while中的select每次都是相同的值的。  
  我上面给你改写的那个不行吗?Top

相关问题

  • 存储过程不能返回值,帮忙看一下,谢谢
  • 请问如何用ASP程序返回存储过程中的字符串
  • 帮忙看看为什么这个存储过程无法返回字符串
  • 如何从Oracle存储过程中返回数组(字符串,整形,日期)
  • !!!请大家看一下,这个存储过程为何不返回记录集?
  • 三层结构执行存储过程,返回字符串出错的简单问题, 谢谢。
  • 关于如何用存储过程输入,返回一个值(如字符串的问题)
  • sqlanywhere在pb中的存储过程无法返回字符串参数(odbc连接)
  • 如何将调用存储过程返回的大字符串保存到字符变量中?
  • 帮忙看一下存储过程

关键词

  • 存储过程
  • grade
  • bh
  • company
  • beginselect
  • varchar
  • 返回
  • count
  • project
  • 值

得分解答快速导航

  • 帖主:nicemood
  • zlp321002
  • WangZWang
  • scmail81
  • rivery
  • scmail81
  • rivery
  • rivery
  • put2006
  • rivery

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo