Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/02/2008, 10:34
Avatar de Andres95
Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años, 1 mes
Puntos: 38
Re: Duda con Delete

Como lo comento el compañero iislas, primero se debe borrar la cuenta ya que para cuando busca la cuenta del titular, ya habias eliminado el titular y no encuentra nada....

Adicional, el codigo de error @@Error se reemplaza cada vez que se ejecuta una operacion, es por eso que hay que manejarlo de forma acumulativa si es que se va a evaluar al final...



Código:
CREATE PROCEDURE dbo.EliminarClientes @Ci int 
AS
DECLARE @Error int, @cuenta int

If (SELECT count(1) FROM clientes WHERE ci=@ci) > 0
BEGIN
   RETURN 0;
END 
ELSE
BEGIN
   BEGIN TRAN
   
   Delete clientes where ci=@ci;
   SET @Error = @@ERROR;

   -- Primero se debe eliminar la cuenta, para que se busque la cuenta
   -- que tiene asignado el titular.
   if (SELECT cuenta FROM titular WHERE ci = @ci) > 0
   Begin
      DELETE cuentas 
      WHERE cuenta = (SELECT cuenta FROM titular WHERE ci = @ci)
      Set @Error = @Error + @@ERROR;
   End    
   
   If (Select count(1) from Titular Where ci = @ci) > 0
   Begin
      Delete Titular where ci=@ci;
      Set @Error = @Error + @@ERROR;
   Else 
   End
   
   If (Select count(1) from Personas Where ci = @ci) > 0
   Begin
      Delete Personas   WHERE ci = @ci;
      Set @Error = @Error + @@ERROR;
   End  
 
   IF(@Error = 0)
   BEGIN
      COMMIT TRAN;
      RETURN 0;
   END
   ELSE
   BEGIN
      ROLLBACK TRAN;
      RETURN 1;
   END 
END
GO
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.