Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/05/2010, 16:14
yenda
 
Fecha de Ingreso: octubre-2007
Mensajes: 38
Antigüedad: 16 años, 7 meses
Puntos: 0
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