CREATE OR REPLACE PROCEDURE sp_fco_upd_reportes_par
( pti_cod_rep number,
  pnu_secuencia number DEFAULT NULL,
  pnu_orden number,
  pvc_tit_campo varchar2,
  pnu_tipo_campo number
)
AS
/********************************************************************/
/*** Reportes e Interfases de Data Tecnologia                     ***/
/*** Descripcion: crea registros en las tablas fco_reportes_par   ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 14 de 2005                                      ***/
/********************************************************************/
  vnm_existe number(3);
  vnu_secuencia   number(3);
BEGIN

IF NVL(pnu_secuencia,0) = 0 THEN-- es un registro nuevo
   vnu_secuencia :=0;
   BEGIN
      SELECT MAX(secuencia)
      INTO vnu_secuencia
      FROM fco_reportes_par
      WHERE cod_rep = pti_cod_rep;
   EXCEPTION
        WHEN OTHERS THEN vnu_secuencia :=0;
   END;
   vnu_secuencia := NVL(vnu_secuencia,0) + 1;

    INSERT INTO fco_reportes_par (cod_rep, secuencia, orden, tit_campo, tipo_campo)
    VALUES (pti_cod_rep, vnu_secuencia, pnu_orden, pvc_tit_campo, pnu_tipo_campo);

ELSE
     --revisando que el orden no exista ya en otra secuencia
     vnm_existe := 0;
     BEGIN
        SELECT 1
        INTO vnm_existe
        FROM fco_reportes_par
        WHERE cod_rep = pti_cod_rep
        AND secuencia <> pnu_secuencia
        AND orden = pnu_orden;
     EXCEPTION
        WHEN OTHERS THEN vnm_existe := 0;
     END;

     IF vnm_existe = 0 THEN
         UPDATE fco_reportes_par
         SET orden = pnu_orden,
         tit_campo = pvc_tit_campo,
         tipo_campo = pnu_tipo_campo
         WHERE cod_rep = pti_cod_rep
         AND secuencia = pnu_secuencia;
     ELSE
        RAISE_APPLICATION_ERROR(-20001,'El valor del orden que digito ya existe en otro registro');
        RETURN;
     END IF;

END IF; --registro nuevo

    COMMIT;
END;
/
CREATE PUBLIC SYNONYM sp_fco_upd_reportes_par FOR ADAM.sp_fco_upd_reportes_par;
GRANT EXECUTE ON sp_fco_upd_reportes_par TO adama;

