CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

大虾救命!存储过程未按理想执行,请帮小子看看,在线等待

楼主lifeforu(向右走)2002-06-22 09:21:59 在 MS-SQL Server / 基础类 提问

drop   procedure   GetWindows  
  go  
  create   procedure   GetWindows(@origin   varchar(10))  
  as    
  declare   @i   int,  
  @windows   varchar(100),  
  @workid   varchar(4)  
  set   @workid=''  
  set   @windows=''  
  declare   win_cur   scroll   cursor  
  for   select   workid     from   window   where   place=@origin   group   by   workid  
  open   win_cur  
  if   @@cursor_rows>0  
  begin  
  set   @i=1  
  while   @i<=@@cursor_rows  
  begin  
  fetch   next   from   win_cur   into   @workid  
  if   @windows=''  
  set   @windows=cast(@workid   as   char(4))  
  else  
  set   @windows=cast(@windows   as   char(4))+','+cast(@workid   as   char(4))  
  set   @i=@i+1  
   
  end  
   
  end  
  close   win_cur  
  deallocate   win_cur  
  select   @windows  
   
   
  大虾救命!存储过程未按理想执行,请帮小子看看,在线等待  
  以上过程在执行中发现只有第一条和最后一条记录被写到@windows,  
  百思不得其解,请教高手! 问题点数:20、回复次数:2Top

1 楼Yang_(扬帆破浪)回复于 2002-06-22 09:34:44 得分 0

drop   procedure   GetWindows  
  go  
  create   procedure   GetWindows(@origin   varchar(10))  
  as    
  declare   @i   int,  
  @windows   varchar(100),  
  @workid   varchar(4)  
  set   @workid=''  
  set   @windows=''  
  declare   win_cur   scroll   cursor  
  for   select   workid     from   window   where   place=@origin   group   by   workid  
  open   win_cur  
  if   @@cursor_rows>0  
  begin  
  set   @i=1  
  while   @i<=@@cursor_rows  
  begin  
  fetch   next   from   win_cur   into   @workid  
  if   @windows=''  
  set   @windows=cast(@workid   as   char(4))  
  else  
  set   @windows=@windows+','+cast(@workid   as   char(4))  
  set   @i=@i+1  
   
  end  
   
  end  
  close   win_cur  
  deallocate   win_cur  
  select   @windows  
   
  Top

2 楼Yang_(扬帆破浪)回复于 2002-06-22 09:38:03 得分 20

更简单的方法:  
   
  drop   procedure   GetWindows  
  go  
  create   procedure   GetWindows(@origin   varchar(10))  
  as    
  declare   @windows   varchar(100)  
  set   @windows=''  
  select   @windows=@windows+','+CAST(workid   AS   VARCHAR(4))     from   window   where   place=@origin   group   by   workid  
  SET   @windows=SUBSTRING(@windows,2,LEN(@windows)-1)  
  Select   @windows  
  GO  
   
  Top

相关问题

  • 如何执行sqlserver的存储过程?
  • 存储过程的执行问题?
  • odbc.net怎么执行存储过程?
  • 如何批执行存储过程???
  • 执行存储过程出错 :(
  • 用ADO如何执行存储过程
  • (ADO)--执行存储过程的错误
  • 为何不能执行存储过程?
  • 执行ORACLE存储过程的问题
  • 存储过程怎么执行?

关键词

  • workid
  • beginset
  • origin
  • varchar
  • declare
  • procedure
  • win
  • set

得分解答快速导航

  • 帖主:lifeforu
  • Yang_

相关链接

  • SQL Server类图书

广告也精彩

反馈

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