Ver Mensaje Individual
  #3  
Antiguo 10-03-2010
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Reputación: 18
Ledian_Fdez Va por buen camino
Thumbs down nada aun!!!

Esto es un procedimiento que intento hacer para una aplicacion que por algun error me genera documentos dobles y necesito eliminarlos todos.

Código SQL [-]
craate procedure EliminaDocumentoGeneradosDobles
@FactNo varchar(30)
as

declare 
  @FactId int,
  @FDet int

--para saber el idfactura conociendo su numero
select @FactId = idfactura from fac_factura
where NumCons = @FactNo

  --para saber el iddetalle conociendo su idfactura
  select @FDet = iddetalle from Fac_DetalleB
  where idfactura = @FactId 

 /* Ese Select me devuelve por ejemplo 3 registros y en @FDet solo se guarda      el ultimo*/
 
begin tran  

  delete from Fac_DetalleBS
  where iddetalle = @FDet

  /* aqui me jenera un error porque solo se elimino en la tabla Fac_DetalleBS el ultimo registro que contenia*/

  delete from Fac_DetalleB
  where idfactura = @FactId

  if @@error <> 0 
    begin
      RollBack
      raiserror ( 'Error al eliminar factura.', 16, -1)
    end
  else
    Commit

Por eso es que intentaba buscar otra solución tal como:

Código SQL [-]
delete from Fac_DetalleBS
where iddetalle  = (select iddetalle from Fac_DetalleB
where idfactura = 15361)

No se si me hago entender.
Responder Con Cita