domingo, 23 de noviembre de 2014

Migracion de Localidades y Asiento



Descripción:

Migracion de los datos de las tablas de migrar a la de localidades y asientos

Problemas:

Dentro de los problemas encontrados estan:
* Las localidades proporcionadas en el archivo no incluyen precios, por lo tanto se tuvieron que insertar los precios de las localidades.
* Otro error muy grande es que venían numeros de asientos repetidos generando grandes problemas en las consultas futuras.




-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_INSERTAR_LOCALIDAD', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_INSERTAR_LOCALIDAD;
GO

CREATE PROCEDURE BT_SP_INSERTAR_LOCALIDAD
AS
BEGIN
 BEGIN TRY
  BEGIN TRANSACTION 
   -- Insert datos de localidad
   INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_Localidad]
   (Nombre,Precio)
   SELECT Nombre,Precio FROM dbo.XMLDatosGenerales DG
   WHERE DG.TipoOperacion = 'insercionLocalidad'AND NOT EXISTS(
   (SELECT 1 FROM [BoleteriaTeatroDB].[dbo].[BT_Localidad] LC WHERE LC.Nombre = DG.Nombre))
  
  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  SELECT * FROM [BoleteriaTeatroDB].[dbo].[BT_Localidad]

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO

-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_INSERTAR_ASIENTO', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_INSERTAR_ASIENTO;
GO

CREATE PROCEDURE BT_SP_INSERTAR_ASIENTO
AS
BEGIN
 BEGIN TRY
  BEGIN TRANSACTION 
   -- Insert datos de asiento
   INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_Asiento]
   (FK_Localidad,Numero)
   SELECT FKLocalidad,ID AS NumeroDeAsiento FROM dbo.XMLDatosGenerales DG
   WHERE DG.TipoOperacion = 'insercionAsiento'AND NOT EXISTS(
   (SELECT 1 FROM [BoleteriaTeatroDB].[dbo].[BT_Asiento] A 
   WHERE A.Numero = DG.numeroAsiento AND A.FK_Localidad = DG.FKLocalidad))
 
  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  SELECT * FROM [BoleteriaTeatroDB].[dbo].[BT_Asiento]

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO



Horas Trabajadas: 3 horas
Autor: Luis Diego Flores

0 comentarios:

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]

<< Inicio