Reputation: 301
I have a cursor here and don't know why it is not terminating. I am a beginner but I wrote some cursors before and can not explain me the problem.
create procedure testeinsacht
@mitid varchar(3),
@kw int
as
declare cstesteinsacht cursor for
select AufDat, KunName, KunOrt, KunPLZ, KunStrasse
from auftrag a
inner join kunde k on a.KunNr = k.KunNr
where MitID is not null and dauer is null and MitID = @mitid
order by AufDat
open cstesteinsacht
declare @adat date
declare @kname varchar(30)
declare @kort varchar(20)
declare @kplz varchar(5)
declare @kstrasse varchar(50)
fetch next from cstesteinsacht into @adat, @kname, @kort, @kplz, @kstrasse
while (@@FETCH_STATUS = 0)
begin
if (dbo.weekcalc(@adat) = @kw)
begin
print cast(@adat as varchar(20)) + @kname
fetch next from cstesteinsacht into @adat, @kname, @kort, @kplz, @kstrasse
end
end
close cstesteinsacht
deallocate cstesteinsacht
I hope someone can explain me the mistake.
Thanks in advance!
Upvotes: 0
Views: 106
Reputation: 1362
As per my comments, change your code to include an else
statement as can be seen below:
create procedure testeinsacht
@mitid varchar(3),
@kw int
as
declare cstesteinsacht cursor for
select AufDat, KunName, KunOrt, KunPLZ, KunStrasse
from auftrag a
inner join kunde k on a.KunNr = k.KunNr
where MitID is not null and dauer is null and MitID = @mitid
order by AufDat
open cstesteinsacht
declare @adat date
declare @kname varchar(30)
declare @kort varchar(20)
declare @kplz varchar(5)
declare @kstrasse varchar(50)
fetch next from cstesteinsacht into @adat, @kname, @kort, @kplz, @kstrasse
while (@@FETCH_STATUS = 0)
begin
if (dbo.weekcalc(@adat) = @kw)
begin
print cast(@adat as varchar(20)) + @kname
fetch next from cstesteinsacht into @adat, @kname, @kort, @kplz, @kstrasse
end
else
begin
print 'Value was not True...'
fetch next from cstesteinsacht into @adat, @kname, @kort, @kplz, @kstrasse
end
end
close cstesteinsacht
deallocate cstesteinsacht
Hope this helps.
Upvotes: 1