| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 873 人关注过本帖
标题:期初余额与发生额循环相加的游标
只看楼主 加入收藏
huangfrsj
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2012-9-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
期初余额与发生额循环相加的游标
我的数据库中有两张表,如图:
图片附件: 游客没有浏览图片的权限,请 登录注册

如今,我想把第二张表的期初余额作为第二张的期初余额
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

最后生成如图:
图片附件: 游客没有浏览图片的权限,请 登录注册


为此我写了一段游标代码:

declare @kmdm1 varchar(11),@qcye numeric(18,2)
declare yecur cursor for
select 科目代码,期初余额 from ceshiqcye
open yecur
fetch next from yecur into @kmdm1,@qcye
print '月份'+'    '+'科目代码'+'        '+'发生额'+'        '+'余额'
while @@fetch_status=0
begin
print '        '+@kmdm1+'                   '+cast(@qcye as varchar(10))
  declare @yf varchar(2),@kmdm2 varchar(11),@fse numeric(18,2),@id int,@ye numeric(18,2)
  declare fscur cursor for
  select 月份,科目编码,发生额,行数 from ceshifse
  open fscur
  fetch next from fscur into @yf,@kmdm2,@fse,@id
  while @@FETCH_STATUS=0
  begin
  print @yf+@kmdm2+@fse+@ye
   if
    @id=1 set @ye=@qcye+@fse
   else
    set @ye=@ye+@fse
   end
  fetch next from fscur into @yf,@kmdm2,@fse,@id
  end
  close fscur
  deallocate fscur
fetch next from yecur into @kmdm1,@qcye
end
close yecur
deallocate yecur
在SQL Server2008中运行,出现如下提示:
消息 156,级别 15,状态 1,第 29 行
关键字 'close' 附近有语法错误。
请各位大侠不吝赐教!!
搜索更多相关主题的帖子: 数据库 cursor 
2014-07-24 16:05
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
收藏
得分:7 
多了个end  
end 与begin不全匹配。

大家都是朋友,有空就来坐坐!
2014-07-25 17:58
huangfrsj
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2012-9-4
收藏
得分:0 
回复 2 楼 volte
还是不对呀,运行了一下,发现只会出现一个期初余额,其他科目的则沿用第一个科目的期初余额,请说明白一些。
2014-07-25 18:55
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
收藏
得分:0 
1,首先把你提的问题理清思路再发上来。“我想把第二张表的期初余额作为第二张的期初余额” 这都是什么意思!你自己能读通吗?
2,你这个游标过程主要是处理什么问题;目的是什么
程序员写程序之前先把逻辑想好。发表下你的思路再提问题;

大家都是朋友,有空就来坐坐!
2014-07-28 10:11
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:7 
赞同楼上
2014-07-28 11:18
huangfrsj
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2012-9-4
收藏
得分:0 
回复 6 楼 volte
第一张表内只有余额,没有发生额,而第二张只有发生额,没有余额,所以我想生成一张既有余额又有发生额的表。
第一步:新表第一条记录是第一张表中的余额直接插入的,没有发生额。接下来是用新表的第一条记录的余额加第二张表的第一条记录的发生额生成新的余额连同第二张的发生额作为新表中的第二条记录,依此类推。
第二步:当第二表中的科目发生改变时,重复第一步。
2014-07-28 18:46
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
收藏
得分:0 
哎,你竟然把变量声明在游标内。
而且从你的代码里也没看到数据被插入到你的新表。
可以说你的代码跟你的逻辑牛头不对马嘴啊!

要是这个不是家庭作业的话,建议还是好好看些书吧!

大家都是朋友,有空就来坐坐!
2014-07-30 09:46
huangfrsj
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2012-9-4
收藏
得分:0 
回复 7 楼 volte
急用,请帮我改一改,谢了大侠。
2014-07-30 20:33
快速回复:期初余额与发生额循环相加的游标
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016429 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved