error en procedimiento+ Buenas tarde, tengo un procedimiento pero no funciona como yo quisiera, estoy tratando que haga un consulta y la envié a una tabla temporal y me cree otra tabla que será donde dejaré los datos finales esto si lo hace,al recorrer mi primera tabla temporal este da un dato en el campo llamado "diferencia" que es la diferencia entre fechas y este valor al recorrer la primera tabla debe ir insertando en la segunda tabla los datos cambiando la fecha inicial donde agrega un dia con set @FECHAINICIO =Dateadd(day,@NUM,@fechaInicio) y la falla es que parece que no me recorre bien mi tabla y tampoco me está adicionando el dia, si me carga la segunda tabla pero con información del primer registro sin ninguna modificación pero parece ser que se pega el ciclo ya que tan solo tengo 10 registro en la primera tabla y la segunda tabla aunque carga mal está guardando 247456 registro y eso porque paré el procedimiento.
Agradecería me ayudaran a rev
Código:
CREATE PROCEDURE sp_PresenciasFijas
AS
SET NOCOUNT ON
SELECT idPresenciaFija, Case datepart(mm,fechaInicio) When 1 then 'Enero' When 2 then 'Febrero' When 3 then 'Marzo' When 4 then 'Abril' When 5 then 'Mayo' When 6 then 'Junio' When 7 then 'Julio' When 8 then 'Agosto' When 9 then 'Septiembre' When 10 then 'Octubre' When 11 then 'Noviembre' When 12 then 'Diciembre' End as mes,month(fechaInicio)as mesN, year(fechaInicio) ano,
day(fechaInicio) as diaI,day(fechaFin) as diaF, DateDiff(day,fechaInicio,fechaFin)diferencia, fechaInicio, fechaFin, Portal.nombrePortal, Portal.idPortal
into temppresenciasFijas
FROM PresenciasFijas INNER join Portal ON Portal.idPortal = PresenciasFijas.idPortal
--WHERE presenciasFijas.idPortal =1 order by month(fechaInicio)
CREATE TABLE tempPres (IDPRESENCIAFIJA INT,MES VARCHAR (50) ,MESN INT,ANO INT,DIAI INT ,DIAF INT,DIFERENCIA INT,FECHAINICIO DATETIME,FECHAFIN DATETIME,NOMBREPORTAL VARCHAR (150) ,IDPORTAL INT)
DECLARE
@IDPRESENCIAFIJA INT,
@MES VARCHAR(50) ,
@MESN INT,
@ANO INT,
@DIAI INT ,
@DIAF INT,
@DIFERENCIA INT,
@FECHAINICIO DATETIME,
@FECHAFIN DATETIME,
@NOMBREPORTAL VARCHAR(150) ,
@IDPORTAL INT,
@NUM INT
--Se declara el cursor
DECLARE CURSORUNI CURSOR FOR
SELECT IDPRESENCIAFIJA, MES,MESN, ANO, DIAI, DIAF, DIFERENCIA, FECHAINICIO,FECHAFIN, NOMBREPORTAL, IDPORTAL
FROM dbo. temppresenciasFijas
OPEN CURSORUNI
FETCH NEXT FROM CURSORUNI INTO @IDPRESENCIAFIJA, @MES, @MESN, @ANO, @DIAI, @DIAF, @DIFERENCIA, @FECHAINICIO,@FECHAFIN, @NOMBREPORTAL, @IDPORTAL
--Se recorre el cursor
WHILE (@@fetch_status <> -1)
BEGIN
IF(@DIFERENCIA=1)
BEGIN
SET @NUM =0
INSERT INTO dbo.tempPres
( IDPRESENCIAFIJA, MES,MESN, ANO, DIAI, DIAF, DIFERENCIA, FECHAINICIO,FECHAFIN, NOMBREPORTAL, IDPORTAL)
VALUES
( @IDPRESENCIAFIJA,@MES,@MESN, @ANO, @DIAI, @DIAF, @DIFERENCIA, @FECHAINICIO,@FECHAFIN, @NOMBREPORTAL, @IDPORTAL)
END
ELSE
BEGIN
WHILE(@NUM=@DIFERENCIA)
set @FECHAINICIO =Dateadd(day,@NUM,@fechaInicio)
BEGIN
INSERT INTO dbo. tempPres
( IDPRESENCIAFIJA, MES,MESN, ANO, DIAI, DIAF, DIFERENCIA, FECHAINICIO,FECHAFIN, NOMBREPORTAL, IDPORTAL)
VALUES
( @IDPRESENCIAFIJA,@MES,@MESN, @ANO, @DIAI, @DIAF, @DIFERENCIA, @FECHAINICIO,@FECHAFIN, @NOMBREPORTAL, @IDPORTAL)
SET @NUM= @NUM+1
END
END
END
drop table tempPresenciasFijas
DROP TABLE tempPres
SET NOCOUNT OFF
RETURN
GO
|