Migración de los datos generales de la base de datos.
Estos se van leyendo desde una tabla en migración para la base de datos principal y todos en un mismo tiempo.
-----------------------------------------------------------------------------------------------------------------------
-- Verifica si el procedure existe, para eliminarla
IF OBJECT_ID ( N'MG_SP_MIGRAR_DATOS_GENERALES', N'P' ) IS NOT NULL
DROP PROCEDURE MG_SP_MIGRAR_DATOS_GENERALES;
GO
-- Create procedure for read file
CREATE PROCEDURE [dbo].[MG_SP_MIGRAR_DATOS_GENERALES]
AS
BEGIN
BEGIN TRY
-- Declaracion de variables del procedure
DECLARE @counter int,@max int; -- Contador del while y max
DECLARE @TipoOperacion nvarchar(255);
-----------------------------------------------------------------------------------------
-- INICIO DATOS GENERALES
-- Set de datos
DECLARE @Nombre varchar(50)
SET @counter = 1;
SET @max = (SELECT COUNT(*) FROM dbo.FileDatosGenerales fdg)+1;
BEGIN TRANSACTION
--Inicio del ciclo de while
WHILE @counter < @max
BEGIN
-- Busca el tipo de operacion a ejecutar
SET @TipoOperacion = (SELECT d.TipoOperacion FROM dbo.FileDatosGenerales d WHERE d.ID = @counter);
-- Inicio del IF
IF @TipoOperacion = 'InsercionTipoCuenta' -- Insercion Tipo Cuenta
BEGIN
-- Declaracion de tipos
SET @Nombre = NULL
SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);
-- Condicion para el Insert de Tipo de Cuenta
IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_TipoCuenta] tc WHERE tc.Nombre = @Nombre)
BEGIN
INSERT INTO [CuentasAhorroDB].[dbo].[CA_TipoCuenta]
(Nombre,Moneda,SaldoMinimoMensual,TasaInteresAnual,MultaSaldoNegativo, MultaSaldoMinimo)
SELECT Nombre,'Colon',SaldoMinimo,TasaAnual,MultaSaldoNegativo, MultaSaldoMinimo FROM FileDatosGenerales dg
WHERE dg.ID = @counter;
PRINT 'insercion tipo cuenta.';
END
END
ELSE IF @TipoOperacion = 'InsercionTipoMovimientoInteres' -- Insercion Tipo Movimiento Interes
BEGIN
-- Declaracion de tipos
SET @Nombre = NULL
SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);
-- Condicion para el Insert de Tipo Movimiento Interes
IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_TipoMovimientoInteres] tc WHERE tc.Nombre = @Nombre)
BEGIN
INSERT INTO [CuentasAhorroDB].[dbo].[CA_TipoMovimientoInteres]
(Nombre)
SELECT Nombre FROM dbo.FileDatosGenerales fdg
WHERE fdg.ID = @counter;
PRINT 'insercion tipo movimiento interes.';
END
END
ELSE IF @TipoOperacion = 'InsercionTipoMovimientoPedientes' -- Insercion Tipo Movimiento Pedientes
BEGIN
-- Declaracion de tipos
SET @Nombre = NULL
SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);
-- Condicion para el Insert de Tipo Movimiento Pendiente
IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_TipoMovimientoPendiente] tc WHERE tc.Nombre = @Nombre)
BEGIN
INSERT INTO [CuentasAhorroDB].[dbo].[CA_TipoMovimientoPendiente]
(Nombre)
SELECT Nombre FROM dbo.FileDatosGenerales fdg
WHERE fdg.ID = @counter;
PRINT 'insercion tipo movimiento pendientes.';
END
END
ELSE IF @TipoOperacion = 'InsercionTipoMovimiento' -- Insercion Tipo Movimiento
BEGIN
-- Declaracion de tipos
SET @Nombre = NULL
SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);
-- Condicion para el Insert de Tipo Movimiento
IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_TipoMovimiento] tc WHERE tc.Nombre = @Nombre)
BEGIN
INSERT INTO [CuentasAhorroDB].[dbo].[CA_TipoMovimiento]
(Nombre)
SELECT Nombre FROM dbo.FileDatosGenerales fdg
WHERE fdg.ID = @counter;
PRINT 'insercion tipo movimiento.';
END
END
ELSE IF @TipoOperacion = 'InsercionTipoMedioMovimientos' -- Insercion Tipo Medio Movimientos
BEGIN
-- Declaracion de tipos
SET @Nombre = NULL
SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);
-- Condicion para el Insert de Tipo Medio Movimiento
IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_TipoMedio] tc WHERE tc.Nombre = @Nombre)
BEGIN
INSERT INTO [CuentasAhorroDB].[dbo].[CA_TipoMedio]
(Nombre)
SELECT Nombre FROM dbo.FileDatosGenerales fdg
WHERE fdg.ID = @counter;
PRINT 'insercion tipo medio movimientos.';
END
END
ELSE IF @TipoOperacion = 'InsercionTipoGestion' -- Insercion Tipo Gestion
BEGIN
-- Declaracion de tipos
SET @Nombre = NULL
SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);
-- Condicion para el Insert de Tipo Gestion
IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_TipoGestion] tc WHERE tc.Nombre = @Nombre)
BEGIN
INSERT INTO [CuentasAhorroDB].[dbo].[CA_TipoGestion]
(Nombre,Comision)
SELECT Nombre,Comision FROM dbo.FileDatosGenerales fdg
WHERE fdg.ID = @counter;
PRINT 'insercion tipo gestion.';
END
END
ELSE IF @TipoOperacion = 'InsercionBanco' -- Insercion Banco
BEGIN
-- Declaracion de tipos
SET @Nombre = NULL
SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);
-- Condicion para el Insert de Tipo Gestion
IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_Banco] tc WHERE tc.Nombre = @Nombre)
BEGIN
INSERT INTO [CuentasAhorroDB].[dbo].[CA_Banco]
(Nombre,Comision)
SELECT Nombre,Comision FROM dbo.FileDatosGenerales fdg
WHERE fdg.ID = @counter;
PRINT 'insercion banco.';
END
END
ELSE IF @TipoOperacion = 'InsercionCliente' -- Insercion Cliente
BEGIN
-- Declaracion de tipos
DECLARE @Usuario varchar(50)
SET @Usuario = (SELECT Usuario FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);
-- Condicion para el Insert de Tipo Gestion
IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_Cliente] tc WHERE tc.Usuario = @Usuario)
BEGIN
INSERT INTO [CuentasAhorroDB].[dbo].[CA_Cliente]
(Nombre,Usuario,Contraseña)
SELECT Nombre,Usuario,Contraseña FROM dbo.FileDatosGenerales fdg
WHERE fdg.ID = @counter;
PRINT 'insercion cliente.';
END
END
SET @counter = @counter + 1;
END
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- Commit transaction
PRINT 'Commit transaction.';
RETURN 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MG_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction.';
RETURN @@ERROR*-1;
END CATCH;
END
GO
Horas Trabajadas: 3.5 hora
Autor: Edward Ovares Villegas
No hay comentarios:
Publicar un comentario