读书人

请大家帮小弟我看看这个存储过程中的游

发布时间: 2012-03-16 16:34:56 作者: rapoo

请大家帮我看看这个存储过程中的游标有什么问题,为什么不循环
CREATE proc lstable1
@IDcode varchar(100)

as

truncate table ls

declare cur_ls cursor
for select 收款单位,品名,等级,SDate,EDate from 付款凭证 where order_id=@IDcode
open cur_ls
declare
@CusName Varchar(100),
@StartTime datetime,
@EndTime datetime,
@Mname varchar(100),
@GradeName varchar(100)

if @@error =0
begin
while @@fetch_status=0
begin
fetch next from cur_ls into @CusName,@Mname,@GradeName,@StartTime,@EndTime
if @@fetch_status=0
begin

insert ls(品名,等级,数量,ID)
select Mname,GradeName,Jweight,IDcode from
app_v_ponderation where
(jweight is not null) and
(CusName like @CusName) and
(Mname like @Mname) and
(GradeName like @GradeName) and
(billdate between @starttime and @endtime) and
(remark like '%入% ')
order by id
end
else
break
end
end
close cur_ls
deallocate cue_ls


GO


[解决办法]
--参考,你的貌似少了一个fetch
DECLARE t_Cursor CURSOR FOR
select * ……
OPEN t_Cursor
FETCH NEXT FROM t_Cursor into @a……
WHILE @@FETCH_STATUS = 0
BEGIN
……
FETCH NEXT FROM t_Cursor into @a……
END
CLOSE t_Cursor
DEALLOCATE t_Cursor
[解决办法]
--try

CREATE proc lstable1
@IDcode varchar(100)

as

truncate table ls

declare cur_ls cursor
for select 收款单位,品名,等级,SDate,EDate from 付款凭证 where order_id=@IDcode
open cur_ls
declare
@CusName Varchar(100),
@StartTime datetime,
@EndTime datetime,


@Mname varchar(100),
@GradeName varchar(100)


fetch next from cur_ls into @CusName,@Mname,@GradeName,@StartTime,@EndTime

while @@fetch_status=0
begin

insert ls(品名,等级,数量,ID)
select Mname,GradeName,Jweight,IDcode from
app_v_ponderation where
(jweight is not null) and
(CusName like @CusName) and
(Mname like @Mname) and
(GradeName like @GradeName) and
(billdate between @starttime and @endtime) and
(remark like '%入% ')
order by id

fetch next from cur_ls into @CusName,@Mname,@GradeName,@StartTime,@EndTime

end

close cur_ls
deallocate cue_ls


GO
[解决办法]
打後, 指定位在第一前
[解决办法]
fetch next from cur_ls into @CusName,@Mname,@GradeName,@StartTime,@EndTime

--取下一行
--第一个fetch只是取第一行
[解决办法]
通俗的讲就是先fetch一下,然后才能判断@@fetch_status等于几啊。
[解决办法]
贴出表结构和一部分数据可以不!?

读书人网 >SQL Server

热点推荐