miércoles, 29 de octubre de 2014
Creación de método Depósito Y Retiro
Creación de método Depósito y Retiro
5 horas
La mayor complicación en éste procedure fue por dudas de implementación. Más específicamente, cuáles tablas habrían de ser modificadas. Se concluyó que la única tabla que convenía actualizar era la de Cuenta y la de movimientos.
-- ########################################################################################################################
-- Stored Procedure of Deposito
-- ########################################################################################################################
-- Verify that the stored procedure does not exist.
IF OBJECT_ID(N'CA_SP_Deposito', N'P') IS NOT NULL
DROP PROCEDURE CA_SP_Deposito;
GO
CREATE PROCEDURE [dbo].[CA_SP_Deposito]
@Cuenta INT ,
@TipoMovimiento INT ,
@TipoMedio INT ,
@Monto MONEY
AS
BEGIN TRY
IF ( NOT EXISTS ( SELECT * FROM [dbo].[CA_Cuenta] WHERE (Id = @Cuenta)))
PRINT 'No existe la cuenta'
BEGIN TRANSACTION
--crea el movimiento
INSERT INTO dbo.CA_Movimiento(FK_Cuenta,FK_TipoMovimiento,FK_TipoMedio,FechaHora,Monto)
VALUES (@Cuenta,@TipoMovimiento,@TipoMedio,GETDATE(),@Monto)
--Actualiza saldo
UPDATE dbo.CA_Cuenta
SET SaldoReal = SaldoReal + @Monto
WHERE dbo.CA_Cuenta.Id = @Cuenta
END TRY
BEGIN CATCH
PRINT 'Error en la transaction'
END CATCH
GO
-- ########################################################################################################################
-- Stored Procedure of Retiro
-- ########################################################################################################################
-- Verify that the stored procedure does not exist.
IF OBJECT_ID(N'CA_SP_Retiro', N'P') IS NOT NULL
DROP PROCEDURE CA_SP_Retiro;
GO
CREATE PROCEDURE [dbo].[CA_SP_Retiro]
@Cuenta INT ,
@TipoMovimiento INT ,
@TipoMedio INT ,
@Monto MONEY
AS
BEGIN TRY
IF (( NOT EXISTS ( SELECT * FROM [dbo].[CA_Cuenta] WHERE (Id = @Cuenta)))AND(SELECT SaldoReal FROM dbo.CA_Cuenta WHERE Id = @Cuenta)>@Monto)
PRINT 'No existe la cuenta o el fondo es insuficiente'
BEGIN TRANSACTION
--crea el movimiento
INSERT INTO dbo.CA_Movimiento(FK_Cuenta,FK_TipoMovimiento,FK_TipoMedio,FechaHora,Monto)
VALUES (@Cuenta,@TipoMovimiento,@TipoMedio,GETDATE(),@Monto)
--Actualiza saldo
UPDATE dbo.CA_Cuenta
SET SaldoReal = SaldoReal - @Monto
WHERE dbo.CA_Cuenta.Id = @Cuenta
END TRY
BEGIN CATCH
PRINT 'Error en la transaction'
END CATCH
GO
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario