miércoles, 26 de noviembre de 2014

Procedure: Problema 7 y Problema 8 Luis



DESCRIPCION:

7) Los nombres de los clientes que compraron tiquetes al menos una
vez, y que no regresaron a comprar, en un periodo de fechas.
Entradas: fecha inicio, fecha fin
Salidas: Nombre del cliente, fecha de la compra; en orden alfabetico del nombre del cliente

8) Los eventos, a los que a los clientes asistieron a funciones mas de una vez, en un rango de fechas
Entrada: Fecha inicio, fecha fin
Salida
Para cada evento: Nombre del evento, numero de personas que asistieron a 2 funciones, numero de personas que asistieron a 3 funciones, numero de personas que asistieron a mas de 3 funciones.

PROBLEMAS:
Error: Msg 8152 Conflicto con tamaño de variables a la hora de programar el SP.
Con los archivos de prueba proporcionados no era posible probarse en su totalidad  el SP, debido a que cada cliente (al ser tan pocos) tenía a su nombre cientos de tiquetes


CODIGO:




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

/*
7) Los nombres de los clientes que compraron tiquetes al menos una
vez, y que no regresaron a comprar, en un periodo de fechas.
Entradas: fecha inicio, fecha fin
Salidas: Nombre del cliente, fecha de la compra; en orden alfabetico del nombre del cliente
*/
Create Procedure BT_SP_Clientes_Abandono
@FechaIni datetime,
@FechaFin datetime
As
Begin
 BEGIN TRY
  BEGIN TRANSACTION 
   Select nombre From BT_Usuario
   inner join BT_Tiquete on BT_Usuario.Id = BT_Tiquete.FK_Usuario
   inner join BT_AsientoXTanda on BT_Tiquete.FK_AsientoXTanda = BT_AsientoXTanda.Id
   inner join BT_Tanda on BT_Tanda.Id = BT_AsientoXTanda.FK_Tanda
   Where (select count (*) From BT_Tiquete)=1
   and FechaHora between @FechaIni and @FechaFin
  
  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO
-- exec BT_SP_Clientes_Abandono '2014-11-21 00:00:00.000', '2015-07-13 00:00:00.000'




Horas Trabajadas: 3,15 hora
Autor: Luis Diego Flores

0 comentarios:

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]

<< Inicio