miércoles, 26 de octubre de 2016

Fundamentos de Bases de Datos: Módulo 02: Ejemplos Procedimientos Almacenados (Stored Procedure)



Script Tabla PagoHoraExtra


https://drive.google.com/open?id=0B7Ct7K_LTJvSM0QzWjh2bkVRbkk



Procedimiento Almacenado


-- =============================================
-- Author:        Daniel
-- Create date: 26/10/2016
-- Description:   Cálculo de Horas Extras
-- =============================================
ALTER PROCEDURE paCalcHoras
      -- Add the parameters for the stored procedure here
      @Anio int = 2016,
      @Mes int = 12
AS
BEGIN
      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;

    -- INSERTE LINEAS DE CODIGO
      DECLARE @Contador INT;  -- DECLARAR VARIABLE
      SET @Contador = 0;           -- ASIGNAR VALOR
      -- CUENTA LAS FILAS DE LA TABLA
      SELECT @Contador = COUNT(*)
            FROM HorasExtras
            WHERE YEAR(HorasExtras.Fecha) = @Anio
            AND MONTH(HorasExtras.Fecha) = @Mes;
      -- ESTRUCTURA DECISION
      IF (@Contador = 0)
      BEGIN
            SELECT 'NO EXISTEN HORAS EXTRAS: ',
                  @Mes, '/', @Anio;
      END
      ELSE
      BEGIN
            -- ANTES DE REALIZAR EL INSERT VALIDAR
            -- QUE NO HAYAN DATOS PARA ESA FECHA
            SET @Contador = 0;
            SELECT @Contador = COUNT(*)
                  FROM PagoHoraExtra
                  WHERE Anio = @Anio
                  AND Mes = @Mes;
            -- SI @Contador > 0 entonces SI HAY DATOS
            IF(@Contador>0)
            BEGIN
                  SELECT 'Período YA FUE Calculado: ',
                        @Mes, '/', @Anio;
            END
            ELSE
            BEGIN
                  INSERT INTO PagoHoraExtra
                        (CodEmpleado, HorasTotales,
                         Anio, Mes, MontoPagado)
                  SELECT CodigoEmpleado AS CodEmpleado,
                        SUM(Cantidad) AS HorasTotales,
                        YEAR(Fecha) AS Anio,
                        MONTH(Fecha) AS Mes,
                        SUM(Cantidad) * 11.70 AS MontoPagado
                  FROM HorasExtras
                  WHERE YEAR(Fecha) = @Anio
                  AND MONTH(Fecha) = @Mes
                  GROUP BY CodigoEmpleado,
                        YEAR(Fecha), MONTH(Fecha);
            END   -- IF(@Contador > 0)
                 
      END   -- IF (@Contador=0)

      SELECT @Anio, @Mes
END   -- BEGIN PROC

GO


No hay comentarios.:

Publicar un comentario