Está en la página 1de 6

UTEC, Ciclo 02-2012 INARI, Seccin 01 Profesor: Juan Jos Contreras

Ejercicio que crea una planilla para cada empleado de una empresa
Leyendo datos de empleados y el salario y hace todos los clculos de ley y da como resultado el valor devengado- total de descuentos = total liquido por cada registro de empleados

--Comienza el ejercicio CREATE DATABASE PLANILLA_CURSOR

USE PLANILLA_CURSOR

CREATE TABLE PUESTOS( IDPUESTO INT IDENTITY(1,1) PRIMARY KEY NOT NULL, NOMPUESTO VARCHAR(60), ) GO

INSERT INTO PUESTOS (NOMPUESTO) VALUES('GERENTE') INSERT INTO PUESTOS (NOMPUESTO) VALUES('SUB-GERENTE') INSERT INTO PUESTOS (NOMPUESTO) VALUES('AUXILIAR')

SELECT*FROM PUESTOS

CREATE TABLE EMPLEADOS( IDEMP INT IDENTITY(1,1) PRIMARY KEY NOT NULL, NOMEMP VARCHAR(60), APEEMP VARCHAR(60),

UTEC, Ciclo 02-2012 INARI, Seccin 01 Profesor: Juan Jos Contreras

SALARIO MONEY, HORAS_TRABAJADAS NUMERIC(10,2), FECHA_INGRESO DATETIME, IDPUESTO INT FOREIGN KEY REFERENCES PUESTOS(IDPUESTO), ESTADO VARCHAR(1) ) GO

INSERT INTO EMPLEADOS (NOMEMP,APEEMP,SALARIO,HORAS_TRABAJADAS,FECHA_INGRESO,IDPUESTO,ESTADO) VALUES('MANUEL','GALVEZ',500,44,'20100101','1','A') INSERT INTO EMPLEADOS (NOMEMP,APEEMP,SALARIO,HORAS_TRABAJADAS,FECHA_INGRESO,IDPUESTO,ESTADO) VALUES('GUILLERMO','ENRIQUEZ',250,44,'20100101','1','A') SELECT*FROM EMPLEADOS

GO

CREATE TABLE PLANILLA_EMPLEADOS( IDPLANILLA VARCHAR(25)NOT NULL, IDEMP INT FOREIGN KEY REFERENCES EMPLEADOS(IDEMP) NOT NULL, NOMEMP VARCHAR(60), APEEMP VARCHAR(60), SALARIO_DEVENGADO MONEY, TOTAL_DESCUENTOS MONEY, FECHA_PALNILLA DATEtime, PRIMARY KEY (IDPLANILLA, IDEMP)

UTEC, Ciclo 02-2012 INARI, Seccin 01 Profesor: Juan Jos Contreras

) GO

Create Procedure PROC_PLANILLA AS BEGIN

/*INICIO DEL CURSOR*/

BEGIN TRANSACTION

DECLARE CURSOR_PLANILLA CURSOR FAST_FORWARD FOR SELECT IDEMP,NOMEMP,APEEMP,SALARIO,HORAS_TRABAJADAS FROM EMPLEADOS With(NoLock) WHERE ESTADO='A'

OPEN CURSOR_PLANILLA DECLARE @SALARIO MONEY, @TOTAL_DEVENGADO MONEY, @ISSS MONEY, @AFP MONEY, @TOTAL_DESCUENTOS MONEY, @TOTAL_LIQUIDO MONEY, @IDEMP INT, @NOMPRE VARCHAR(60),

UTEC, Ciclo 02-2012 INARI, Seccin 01 Profesor: Juan Jos Contreras

@APELLIDO VARCHAR(60), @SALARIO_HORA MONEY, @HORAS_TRABAJADAS NUMERIC(12,2), @IDPLANILLA VARCHAR(25)

FETCH NEXT FROM CURSOR_PLANILLA INTO @IDEMP,@NOMPRE,@APELLIDO,@SALARIO,@HORAS_TRABAJADAS

WHILE (@@FETCH_STATUS <> -1) BEGIN IF(@@FETCH_STATUS <> -2)

SET @SALARIO_HORA=((@SALARIO/30)/8) SET @TOTAL_DEVENGADO=@SALARIO_HORA*(44*4) SET @ISSS=@TOTAL_DEVENGADO*(2.5/100) SET @AFP=@TOTAL_DEVENGADO*(4.5/100) SET @TOTAL_DESCUENTOS=(@ISSS+@AFP) SET @TOTAL_LIQUIDO=(@TOTAL_DEVENGADO@TOTAL_DESCUENTOS) SET @IDPLANILLA='01'

INSERT INTO PLANILLA_EMPLEADOS(IDPLANILLA,IDEMP,NOMEMP,APEEMP,SALARIO_DEVENGADO, TOTAL_DESCUENTOS,FECHA_PALNILLA)

VALUES(@IDPLANILLA,@IDEMP,@NOMPRE,@APELLIDO,@TOTAL_DEVENGADO,@TOT AL_DESCUENTOS,GETDATE())

UTEC, Ciclo 02-2012 INARI, Seccin 01 Profesor: Juan Jos Contreras

FETCH NEXT FROM CURSOR_PLANILLA INTO @IDEMP,@NOMPRE,@APELLIDO,@SALARIO,@HORAS_TRABAJADAS END IF(@@Error<>0) RollBack Transaction Else Commit Transaction

CLOSE CURSOR_PLANILLA DEALLOCATE CURSOR_PLANILLA /*FIN DEL CURSOR*/ EDN --fin del procedimiento Almacenado

--Ejecutar el cursor: Exec PROC_PLANILLA

--Ver el resultado del Cursor

SELECT*FROM PLANILLA_EMPLEADOS

IMPORTANTE!!!---------------------------------------------------

UTEC, Ciclo 02-2012 INARI, Seccin 01 Profesor: Juan Jos Contreras

TRAER ESTA PRACTICA IMPRESA dia del parcial !!! POSIBLES ESTADOS DE UN CURSOR Y CUAL ES EL SIGNIFICADO @@fetch_status Investigar funciones SqlServer Str() Format() Convert() Mid() Left() Right() SubStr() Year() Month() Day()

También podría gustarte