Проблема не понятная мне с курсором!!!! Очень прошу помощи!!!

HanIP
Дата: 08.06.2011 09:32:24
есть процедура ну допустим изменяющая платеж после чего в таблице оплат делается своего рода разноска денег
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.
Помогите очень нужно!!!!
daw
Дата: 08.06.2011 09:36:01

> DEALLOCATE Сur;

тут вместо английской C русская С стоит.

Posted via ActualForum NNTP Server 1.4

HanIP
Дата: 08.06.2011 09:38:28
Спасибо совсем уже башка не шарит, надо пойти поспать наверное!!!
WarAnt
Дата: 08.06.2011 10:09:43
HanIP,

а все потому что не соблюдаете кошерность:) не кошерно объекты русскими буквами обзывать
HanIP
Дата: 08.06.2011 10:52:18
тоже не сторонник русских названий просто база в таком состоянии досталась.