viernes, 3 de febrero de 2017

Fundamentos de Bases de Datos: Ejemplos 2017/02/03

Ejemplos Vistas


-- Obtiene la suma de Cargo, Abono y el Saldo
-- Agrupado por tarjeta

CREATE VIEW [dbo].[vTarjetaSaldoDS]
AS
SELECT        CodTarjeta, SUM(Cargo) AS SumaCargo, SUM(Abono) AS SumaAbono,
       SUM(Cargo - Abono) AS SaldoActualReal
       FROM            dbo.Movimiento
GROUP BY CodTarjeta

GO


-- Lista las tarjetas cuyo Tarjeta.SaldoActual sea diferente de la vista
CREATE VIEW [dbo].[vSaldoDiferenteDS]
AS
SELECTTarjeta.CodTarjeta, Tarjeta.CodCliente, Tarjeta.NumeroTarjeta, Tarjeta.FechaVencimiento, Tarjeta.LimiteCredito,
Tarjeta.SaldoActual, dbo.vTarjetaSaldoDS.SaldoActualReal
FROM            dbo.Tarjeta
INNER JOIN  dbo.vTarjetaSaldoDS
ON dbo.Tarjeta.CodTarjeta = dbo.vTarjetaSaldoDS.CodTarjeta
WHERE        (NOT (Tarjeta.SaldoActual = vTarjetaSaldoDS.SaldoActualReal))


GO



Ejemplos Procedimientos Almacenados



-- =============================================
-- Author:          Daniel Santizo Saldaña
-- Create date: 20170203
-- Description:     Actualizar saldo Tarjeta por medio del CodTarjeta
-- =============================================
CREATE PROCEDURE paActualizarSaldoDS
       -- Add the parameters for the stored procedure here
       @CodTarjeta int = 0
AS
BEGIN
       -- SET NOCOUNT ON added to prevent extra result sets from
       -- interfering with SELECT statements.
       SET NOCOUNT ON;
       -- VARIABLE
       DECLARE @SaldoReal DECIMAL = 0;
       -- CONSULTA por el Saldo
       SELECT @SaldoReal = SaldoActualReal
             FROM vTarjetaSaldoDS
             WHERE CodTarjeta = @CodTarjeta;
       -- ACTUALIZAR EL SALDO en la Tabla Tarjeta
       UPDATE Tarjeta
             SET SaldoActual = @SaldoReal
             WHERE CodTarjeta = @CodTarjeta;
END
GO



-- =============================================
-- Author:          Daniel Santizo Saldaña
-- Create date: 20170203
-- Description:     Cambio el Estado del Cliente sino tiene Saldo Pendiente
-- =============================================
CREATE PROCEDURE paClienteBajaDS
       -- Add the parameters for the stored procedure here
       @CodCliente int = 0
AS
BEGIN
       -- SET NOCOUNT ON added to prevent extra result sets from
       -- interfering with SELECT statements.
       SET NOCOUNT ON;

    -- Insert statements for procedure here
       DECLARE @Saldo decimal = 0;
       SELECT @Saldo = SUM(v.SaldoActualReal)
             FROM Tarjeta T
             INNER JOIN vTarjetaSaldoDS v
             ON T.CodTarjeta = v.CodTarjeta
             WHERE T.CodCliente = @CodCliente;
       -- SI EL SALDO ES IGUAL A 0
       IF (@Saldo = 0)
             UPDATE Cliente
                    SET Estado = 'B'
                    WHERE CodCliente = @CodCliente;
       ELSE
             RAISERROR( 'El Cliente %d tienen un saldo',
                    3, 5, @CodCliente);

       RETURN @Saldo;
END

GO





No hay comentarios.:

Publicar un comentario