 
			
				07/06/2005, 11:48
			
			
			     |  
      |    |    |    Fecha de Ingreso: abril-2005  
						Mensajes: 19
					  Antigüedad: 20 años, 6 meses Puntos: 0     |        |  
      Hola, disculpa que no tenga tanto tiempo para analizar tu caso pero te dejo en ejemplo de como lo hago yo  
Ojala te sirva   
Código:
  -- AUTOR: GVV. OBJETO: Eliminar una venta, su detalle, y los abonos en caso de ser un crédito
-- También Actualiza lotes
ALTER  PROCEDURE Elimina_Venta 
(@Venta INT, @Sucursal INT, @Band INT, @Motivo nvarchar(150) = null, @Fecha datetime = null)
/*@Band = 1 Elimina la venta completamente
  @Band = 0 Reactualiza lotes, no elimina encabezado de venta pero pone status en 2 (Cancelado) */
AS
DECLARE @Cant INT, @Prod NVARCHAR(4), @Compra INT
DECLARE	DetVta CURSOR 
		FOR SELECT DetConCan, CatProIde, CatComIde FROM DetVtaCon WHERE VtaConIde = @Venta
OPEN DetVta
	FETCH NEXT FROM DetVta INTO @Cant, @Prod, @Compra
WHILE (@@fetch_status <> -1)
BEGIN
	IF (@@fetch_status <> -2)
	BEGIN
		UPDATE TblCatLot
		SET CatLotCan = CatLotCan + @Cant
		WHERE CatLotCve = @Prod + '-' + CAST(@Compra AS NVARCHAR)
		AND CatSucIde = @Sucursal
	END
	FETCH NEXT FROM DetVta INTO @Cant, @Prod, @Compra
END
CLOSE DetVta
DEALLOCATE DetVta
if (@Band = 1)
	BEGIN
		DELETE FROM DetVtaCon WHERE VtaConIde = @Venta	--Se Borra el detalle de la venta
		DELETE FROM TblCatAbo WHERE CatVtaIde = @Venta	--Se Borra cualquier abono en caso de ser
														--un crédito
														
		DELETE FROM TblVtaCon Where Id = @Venta			--Se Borra el encabezado de la venta
	END
ELSE IF (@Band = 0)
	BEGIN
		UPDATE TblVtaCon 
		SET VtaConSta = 2, VtaConObs = VtaConObs + ' *** ' + @Motivo, FecMovCan = @Fecha
		WHERE Id = @Venta
	END
   Saludos            |