CREATE OR REPLACE PROCEDURE sp_fco_gen_reportes_proc
(
  psi_id_rep  number,
  pvc_usuario varchar2,
  pti_cod_rep number,
  pch_trab_dde char DEFAULT '',
  pch_trab_hta char DEFAULT '',
  pch_agr_1 char DEFAULT '',
  pch_agr_2 char DEFAULT '',
  pch_agr_3 char DEFAULT '',
  pch_dato_dde char DEFAULT '',
  pch_dato_hta char DEFAULT ''
)
/********************************************************************/
/*** Reportes e Interfases de Data Tecnologia                     ***/
/*** Descripcion: invoca los procedimientos de reportes de        ***/
/*** acuerdo a los parametros enviados de entrada                 ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 14 de 2005                                       ***/
/********************************************************************/
AS
	vvc_proc_genera	varchar2(30);
  sComilla char(1);
  vvc_inter	varchar2(10);
  cvc_valor varchar2(20);
  vnu_len       number(7);
  vvc_ssql  varchar2(2000);
  ejecutar_sp   EXCEPTION;
  CURSOR cr_valores IS
  SELECT valor
  FROM fco_reportes_proc
  WHERE id_rep = psi_id_rep
  AND usuariow = pvc_usuario
  AND cod_rep = pti_cod_rep
  ORDER BY orden;
BEGIN--1
  sComilla := chr(39);
	--trayendo el nombre del procedimiento
  vvc_proc_genera := '';
  vnu_len := 0;
  BEGIN
  	SELECT proc_generacion
    INTO vvc_proc_genera
  	FROM fco_reportes
  	WHERE cod_rep = pti_cod_rep;
    EXCEPTION
      WHEN NO_DATA_FOUND THEN vvc_proc_genera := '0';
      WHEN OTHERS THEN vvc_proc_genera := '';
  END;
	vvc_proc_genera := LTRIM(RTRIM(NVL(vvc_proc_genera,'')));
  vnu_len := NVL(LENGTH(vvc_proc_genera),0);
	IF vnu_len = 0 THEN
		vvc_inter := LTRIM(RTRIM(pti_cod_rep));
    RAISE_APPLICATION_ERROR(-20001, 'Error de datos: No existe la funcion de generacion para el reporte: '||vvc_inter);
    RETURN;
	END IF;
  vvc_ssql := vvc_proc_genera || ' ' || '(' || RTRIM(psi_id_rep) || ',' ||
              sComilla || pvc_usuario || sComilla || ',' || RTRIM(pti_cod_rep) || ',' ||
              sComilla || pch_trab_dde || sComilla || ',' ||
              sComilla || pch_trab_hta || sComilla || ',' ||
              sComilla || pch_agr_1 || sComilla || ',' ||
              sComilla || pch_agr_2 || sComilla || ',' ||
              sComilla || pch_agr_3 || sComilla || ',' ||
              sComilla || pch_dato_dde || sComilla || ',' ||
              sComilla || pch_dato_hta || sComilla;
 	OPEN cr_valores;
	FETCH cr_valores INTO cvc_valor;
	WHILE cr_valores%FOUND  LOOP
        vvc_ssql := vvc_ssql || ',' || sComilla || cvc_valor || sComilla;
  	FETCH cr_valores INTO cvc_valor;
	END LOOP;
	CLOSE cr_valores;
   vvc_ssql :=  vvc_ssql || ');';
  BEGIN
DBMS_OUTPUT.PUT_LINE('2 - vvc_ssql: '||vvc_ssql);
      EXECUTE IMMEDIATE 'BEGIN '||vvc_ssql||' END;';
  END;
  COMMIT;
END;--1
/
