一个奇怪的游标问题

ldl999 2004-08-31 09:28:22
从表里取两个字段,显示出来 但最后一条是重复的
程序如下:
declare rccode_cursor cursor for
select prc_code,prc_desc from rencai_info_table
open rccode_cursor
fetch next from rccode_cursor into @rp_code,@rp_desc
select @msg = @msg +@rp_code+@rp_desc+';'

while @@fetch_status = 0
begin
fetch next from rccode_cursor into @rp_code ,@rp_desc
select @msg = @msg+@rp_code+@rp_desc+';'
end
select @msg = @msg +''
close rccode_cursor
deallocate rccode_cursor
返回的内容如下:假如只有5条记录
01 金融;02电子;
03 计算机;04 医药;
05 法律;05法律;
哪位朋友给指点指点,多谢
...全文
134 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldl999 2004-08-31
  • 打赏
  • 举报
回复
多谢众位,问题终于解决了 这么晚
zjcxc 元老 2004-08-31
  • 打赏
  • 举报
回复
--不按我上面的改,你也可以这样改:

declare rccode_cursor cursor for
select prc_code,prc_desc from rencai_info_table
open rccode_cursor
fetch next from rccode_cursor into @rp_code,@rp_desc
select @msg = @msg +@rp_code+@rp_desc+';'

while @@fetch_status = 0
begin
fetch next from rccode_cursor into @rp_code ,@rp_desc
if @@fetch_status = 0 ---加个判断,当然没有我最上面写得那样好,因为这样重复判断了
select @msg = @msg+@rp_code+@rp_desc+';'
end
select @msg = @msg +''
close rccode_cursor
deallocate rccode_cursor
Andy__Huang 2004-08-31
  • 打赏
  • 举报
回复
你的循環沒有問題,面是

select @msg = @msg +''
運行完後@msg 是最後一條記錄的內容,因為你是再加一次,所以最後一條記錄有兩次出現,改為
select @msg
ivyorg 2004-08-31
  • 打赏
  • 举报
回复
游标怎么让它执行一次啊?
也就是说到了最后一条记录,就不往下执行了。
怎么改呢?
zjcxc 元老 2004-08-31
  • 打赏
  • 举报
回复
返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。

'当在最后一条语句时
fetch next from rccode_cursor into @rp_code ,@rp_desc

的结果,@@fetch_status=0 这个条件仍然成立,因为此是是取到记录的
所以继续执行循环,然后
select @msg = @msg+@rp_code+@rp_desc+';'
当然就被多执行一次.
zjcxc 元老 2004-08-31
  • 打赏
  • 举报
回复
declare rccode_cursor cursor for
select prc_code,prc_desc from rencai_info_table
open rccode_cursor

fetch next from rccode_cursor into @rp_code,@rp_desc
--select @msg = @msg +@rp_code+@rp_desc+';'

while @@fetch_status = 0
begin
select @msg = @msg+@rp_code+@rp_desc+';'
fetch next from rccode_cursor into @rp_code ,@rp_desc
end
select @msg = @msg +''
close rccode_cursor
deallocate rccode_cursor
lzymagi 2004-08-31
  • 打赏
  • 举报
回复
select @msg = @msg +''
close rccode_cursor
deallocate rccode_cursor

应该是上面第一句

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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