请帮忙看一存储过程问题

bezier103 2005-06-23 11:43:11
ALTER PROCEDURE jhtjb_bm
@begindate datetime,
@enddate datetime,
@bmbh char(10)
AS


declare @t TABLE (spbm varchar(50) null,
spmc varchar(100) null,
jhsl decimal(18,2) null,
jese decimal(18,2) null,
jhzj decimal(18,4) null)

declare @spbm varchar(50),
@spmc varchar(100),
@jhsl decimal(18,2),
@jese decimal(18,2),
@jhzj decimal(18,2)

DECLARE @pro_cursor_spbm CURSOR

SET @pro_cursor_spbm = CURSOR FOR
SELECT DISTINCT left(b.spbm,2) as spbm,c.spmc
FROM jhd a,jhsp b,commodify c
where a.jhbh=b.jhbh AND left(b.spbm,2)=c.spbm and c.dept_id=@bmbh and
datediff(dd,a.jhrq,@begindate)<=0 and datediff(dd,a.jhrq,@enddate)>=0 and b.zt<>'9'

OPEN @pro_cursor_spbm

FETCH next FROM @pro_cursor_spbm INTO @spbm,@spmc
WHILE (@@FETCH_STATUS = 0)

BEGIN
declare @Nowbmbh char(10)
select @Nowbmbh=min(a.bmbh),@jhsl=isnull(sum(b.jhsl - isnull(b.thsl,0)),0),@jese = isnull(sum(b.jese),0),@jhzj = isnull(sum(b.jhzj),0)
from jhd a,jhsp b,commodify c
where (a.jhbh=b.jhbh) and c.spbm=@spbm AND a.bmbh=@bmbh and
datediff(dd,a.jhrq,@begindate)<=0 and datediff(dd,a.jhrq,@enddate)>=0 and b.zt<>'9'
group by left(b.spbm,2),c.spmc

if @nowbmbh = @bmbh
begin
insert into @t SELECT @spbm,@spmc,@jhsl,@jese,@jhzj
end
FETCH next FROM @pro_cursor_spbm INTO @spbm,@spmc
END

--insert into @t SELECT @spbm,@spmc,@jhsl,@jese,@jhzj

CLOSE @pro_cursor_spbm
DEALLOCATE @pro_cursor_spbm

select * from @t

上面的可以运行,根据条件能查询的正确的数据记录N条;但显示的数据总是N条记录中最后一条的数据? 麻烦大家帮忙看看,谢谢
...全文
58 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
pbsql 2005-06-23
  • 打赏
  • 举报
回复
declare @Nowbmbh char(10)放在循环里都没有报错,说明循环最多只执行了一次(只有一条记录)
bezier103 2005-06-23
  • 打赏
  • 举报
回复
谢谢楼上的
上面那条关联的条件是我后来加的,所执行的有N条记录,只是所以的记录都是一样的数据(最后一条的数据信息)

27,580

社区成员

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

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