есть процедура ну допустим изменяющая платеж после чего в таблице оплат делается своего рода разноска денег
ALTER procedure [dbo].[Изменить_Платеж]
@ID int,
@ПлатДок tinyint,
@Клиент_ID int,
@ДатаС datetime,
@ДатаПо datetime,
@НомерДок int,
@ДатаДок datetime,
@СуммаДок float,
@СуммаОплач float,
@ДопУсл nvarchar(max),
@Постфикс nvarchar(20),
@ПдрДок bit,
@ДатаОплСч datetime,
@Организация_ID int
as
Update Платежи set
ПлатДок= @ПлатДок,
Клиент_ID= @Клиент_ID,
ДатаС= @ДатаС,
ДатаПо= @ДатаПо,
НомерДок= @НомерДок,
ДатаДок= @ДатаДок,
СуммаДок= @СуммаДок,
СуммаОплач= @СуммаОплач,
ДопУсл= @ДопУсл,
Постфикс= @Постфикс,
ПдрДок= @ПдрДок,
ДатаОплСч= @ДатаОплСч,
Организация_ID=@Организация_ID
where ID=@ID
declare @pl int,@plid int
set @pl=(select count(*) from Оплата where (ОплатаКлиента=0)and(СуммаКлиенту=@СуммаДок))
if (@pl>0)
begin
set @plid=(select min(ID) from Оплата where (ОплатаКлиента=0)and(СуммаКлиенту=@СуммаДок))
update Оплата set
ОплатаКлиента=1,
ОплКлтДата=@ДатаДок,
Опл=@СуммаДок
where ID=@plid
end
else
begin
declare @sum decimal(18,2),@ID_opl int,@Sum_opl decimal(18,2),@opl decimal(18,2)
set @sum=@СуммаДок
DECLARE Cur CURSOR FOR
SELECT Оплата.ID, СуммаКлиенту, Опл
FROM Оплата inner join Заказы on Оплата.Заказ_ID=Заказы.ID
WHERE (Клиент_ID =@Клиент_ID)and(ОплатаКлиента=0)
OPEN Cur;
FETCH NEXT FROM Cur
INTO @ID_opl, @Sum_opl, @opl
WHILE (@@FETCH_STATUS = 0)and(@sum<=0)
BEGIN
if (@sum>=@Sum_opl-isnull(@opl,0))
begin
update Оплата set
ОплатаКлиента=1,
ОплКлтДата=@ДатаДок,
Опл=@Sum_opl-isnull(@opl,0)
where ID=@ID_opl
set @sum=@sum-@Sum_opl-isnull(@opl,0)
end
else
begin
update Оплата set
Опл=@Sum+isnull(@opl,0)
where ID=@ID_opl
set @sum=0
end
FETCH NEXT FROM Cur
INTO @ID_opl, @Sum_opl, @opl
END;
CLOSE Cur;
DEALLOCATE Сur;
end
выдает две ошибки не совсем понятно
Msg 16915, Level 16, State 1, Procedure Изменить_Платеж, Line 35
A cursor with the name 'Cur' already exists.
Msg 16916, Level 16, State 1, Procedure Изменить_Платеж, Line 77
A cursor with the name 'Сur' does not exist.
Помогите очень нужно!!!!