¡Hola!

Bueno, creo que es hora de poner un primer post en esta área. Jeje.

Verán, necesito incluir en un script SQL en PDI, un bucle "while" para llenar una dimensión tiempo. Tengo el siguiente código que me funciona perfectamente en MySQL pero no logro hacer que funcione en el control "Ejecutar script SQL" de PDI. Leí por ahí que no es posible que los bucles en script se ejecuten. ¿Tiene alguien alguna idea o sugerencia de cómo puedo hacer? ¡Muchas gracias desde ya!

Code:
DROP procedure IF EXISTS `llenarDimTiempo`;

SET lc_time_names = 'es_SV';

/* Obtengo las fechas mínima y máxima para la dimensión tiempo*/
SET @fecMin = (SELECT MIN(LEAST(fecrecib, fecdiag, fecrepar, fecdevol)) FROM tempExcel);
SET @fecMax = (SELECT MAX(GREATEST(fecrecib, fecdiag, fecrepar, fecdevol)) FROM tempExcel);

DELETE from tempExcel where YEAR(fecrecib)<2002 or YEAR(fecdiag)<2002 or YEAR(fecrepar)<2002 or YEAR(fecdevol)<2002;

DELIMITER $$

CREATE PROCEDURE `llenarDimTiempo` ()

/* Lleno la dimensión tiempo con cada fecha comprendida en el rango obtenido de la tabla 'tempExcel' */
BEGIN
WHILE (@fecMin <= @fecMax) DO

    set @diaMes = dayofmonth(@fecMin);
    set @diaAnio = dayofyear(@fecMin);
    set @nombreDiaSemana = dayname(@fecMin);
    set @diaSemana = dayofweek(@fecMin);
    set @esDiaSemana = IF(@diaSemana=1 or @diaSemana=7,'No','Sí');
    set @semanaAnio =  WEEK(@fecMin,0);
    set @nombreMes = monthname(@fecMin);
    set @mesAnio = MONTH(@fecMin);
    set @anioCalendario = YEAR(@fecMin);
    set @trimestreCalendario = CONCAT('Trimestre ',QUARTER(@fecMin));
    set @semestreCalendario = IF(QUARTER(@fecMin)=1 or QUARTER(@fecMin)=2,'Semestre 1','Semestre 2');
    set @anioCalendarioMes = IF(@mesAnio<10, CONCAT(@anioCalendario,'0',@mesAnio), CONCAT(@anioCalendario,@mesAnio));
    set @anioCalendarioTrimestre = CONCAT(@anioCalendario,'0',RIGHT(@trimestreCalendario,1));
    set @anioCalendarioSemestre = CONCAT(@anioCalendario,'0',RIGHT(@semestreCalendario,1));
    set @esUltimoDiaMes = if(@fecMin=LAST_DAY(@fecMin),'Sí','No');
    set @tiempoKey = CONCAT(@anioCalendario,IF(@mesAnio<10,'0',''),@mesAnio,IF(@diaMes<10,'0',''),@diaMes);

    insert into DimTiempo (tiempoKey,fechaCompleta,diaSemana,nombreDiaSemana,diaMes,diaAnio,esDiaSemana,
    semanaAnio,nombreMes,mesAnio,esUltimoDiaMes,trimestreCalendario,semestreCalendario,anioCalendario,
    anioCalendarioMes,anioCalendarioTrimestre,anioCalendarioSemestre) values (@tiempoKey,@fecMin,@diaSemana,@nombreDiaSemana,@diaMes,@diaAnio,@esDiaSemana,
    @semanaAnio,@nombreMes,@mesAnio,@esUltimoDiaMes,@trimestreCalendario,@semestreCalendario,@anioCalendario,
    @anioCalendarioMes,@anioCalendarioTrimestre,@anioCalendarioSemestre);
    delete from dimclientes;
    
/* Incremento la fecha en uno hasta llegar a la fecha máxima obtenida al inicio */
set @fecMin = DATE_ADD(@fecMin, INTERVAL 1 day);

END WHILE;

END $$

DELIMITER ;

call llenarDimTiempo();