lunes, 22 de octubre de 2012

Oracle 10g PL/sql Declaración de Cursor con parámetros WITH

CURSOR CURQ_INTERMEDIARIO (P1_CODINTER P_CODINTER,P1_DESDE P_DESDE,P1_HASTA P_HASTA,P1_ESTATUS P_ESTATUS,P1_NUMOBLIG P_NUMOBLIG,P1_TIPOMONEDA P_TIPOMONEDA,P1_NROLOTE P_NROLOTE,P1_CODOFI P_CODOFI)
IS
    WITH Q_INTERMEDIARIO AS
         (SELECT 
          I.CODOFI,
          T.APETER||' '||T.NOMTER NOMINT,
          T.NUMID,
          T.TIPOID,
          T.DVID,
          pr_util.busca_nomcli(p.codcli) NOMCLI,
          P.NUMPOL ,
          P.fecemi,
          R.CODRAMOCERT,
          R. MTOMONEDA,
          R.numrec,
          P.CODPOL,   
          OP.FOPERINTER,
          OP.NUMOPERINTER,
          OP.CODINTER,
          OP.TIPOOPERINTER,
          OP.IDEREC,
          DECODE(:P_TIPOMONEDA,'DL',OP.CODMONEDA, 'BS') CODMONEDA,
          OP.MONTOOPERINTERLOCAL,
          OP.MONTOOPERINTERFORANEA,
          OP.MONTOOPERORIGLOCAL,
          OP.MONTOOPERORIGFORANEA,
          OP.STSOPERINTER,
          OP.FECSTS,
          OP.FOPERINTERORIG,
          OP.NUMOPERINTERORIG,
          OP.NUMOBLIG,
          I.porcfondo,
          TOP.descoperinter descoper,
          R.PORCCOM
        FROM  OPER_INTER OP,
              RECIBO R,
              POLIZA P,
              INTERMEDIARIO I,
              TERCERO T,
              TIPO_OPER_INTER TOP
        WHERE I.TIPOID = T.TIPOID
        AND   I.NUMID = T.NUMID
        AND   I.DVID   = T.DVID   
        AND   (OP.NROLOTE=P1_NROLOTE OR P1_NROLOTE=0)
        AND   OP.IDEREC=R.IDEREC(+)
        AND   R.IDEPOL=P.IDEPOL(+) 
        AND   OP.tipooperinter = TOP.tipooperinter
        AND   OP.tipooperinter != 'FAHO'
        AND   OP.codinter = I.codinter
        AND   OP.NUMOBLIG IN (SELECT DISTINCT op.numoblig
                              FROM  OPER_INTER OP,
                                    RECIBO R,
                                    POLIZA P,
                                    INTERMEDIARIO I,
                                    TERCERO T,
                                    TIPO_OPER_INTER TOP
                              WHERE I.TIPOID = T.TIPOID
                              AND   I.NUMID = T.NUMID
                              AND   I.DVID   = T.DVID   
                              AND   (I.CODINTER = P1_CODINTER OR  P1_CODINTER='0')
                              AND   OP.IDEREC=R.IDEREC(+)
                              AND   R.IDEPOL=P.IDEPOL(+) 
                              AND   OP.tipooperinter = TOP.tipooperinter
                              AND   (STSOPERINTER=P1_ESTATUS OR P1_ESTATUS='0') 
                              AND   OP.tipooperinter != 'FAHO'
                              AND   OP.codinter = I.codinter
                              AND   (I.CODOFI = P1_CODOFI OR P1_CODOFI = '0')
                              AND   TRUNC(TO_DATE(OP.FECSTS,'DD/MM/RRRR')) >= TO_DATE(P1_DESDE ,'DD/MM/RRRR')
                              AND   TRUNC(TO_DATE(OP.FECSTS,'DD/MM/RRRR')) <= TO_DATE(P1_HASTA,'DD/MM/RRRR')
                              AND   OP.NUMOBLIG IS NOT NULL
                              AND   (OP.NUMOBLIG = P1_NUMOBLIG OR P1_NUMOBLIG = 0)
                              AND   (OP.codmoneda = P1_TIPOMONEDA or  nvl(P1_TIPOMONEDA ,'0') = '0'))
                             AND    TRUNC(TO_DATE(OP.FOPERINTER,'DD/MM/RRRR')) >= NVL(TO_DATE(P1_FECLIQ,'DD/MM/RRRR'),TRUNC(TO_DATE(OP.FOPERINTER,'DD/MM/RRRR')) )  
                        ----     AND    OP.foperinter= TRUNC(SYSDATE) mcgb 16112011
                             AND montooperinterlocal IS NOT NULL
                             AND   montooperinterlocal!=0
        ORDER BY OP.NUMOBLIG,P.CODPOL,R.CODRAMOCERT,P.NUMPOL,NumOperInter,TIPOOPERINTER),
   RESUMEN AS
            (SELECT nvl(OP.numoblig,0) numoblig ,
                   OP.codinter,
                   OP.tipooperinter tipooperresumen,
                   TOP.descoperinter, 
                   SUM(OP.montooperinterlocal) mtooperloc,
                   SUM(OP.montooperinterforanea) mtoopermon
            FROM   OPER_INTER OP, TIPO_OPER_INTER TOP
            WHERE  
            OP.tipooperinter = TOP.tipooperinter
            AND   ( OP.codmoneda = P1_TIPOMONEDA or  nvl(P1_TIPOMONEDA ,'0') = '0')
            GROUP  BY OP.numoblig ,
                   OP.codinter,
                   OP.tipooperinter,
                   TOP.descoperinter        
            order by  OP.numoblig ,
                   OP.codinter,
                   OP.tipooperinter,
                   TOP.descoperinter),
   ANTICIPO AS
            (select a.codinter,
                   a.nroanticipo,
                   to_char(a.fecanticipo,'dd/mm/yyyy') fecanticipo,
                   a.mtoanticipo,
                   a.saldoanticipo,
                   nvl(d.numoblig,0) numoblig
            from   anticipos a, det_anticipo d
            where  a.codinter = d.codinter
            and    a.nroanticipo = d.nroanticipo)
    select
           Q_INTERMEDIARIO.CODOFI,
           Q_INTERMEDIARIO.NOMINT,
           Q_INTERMEDIARIO.NUMID,
           Q_INTERMEDIARIO.TIPOID,
           Q_INTERMEDIARIO.DVID,
           Q_INTERMEDIARIO.NOMCLI,
           Q_INTERMEDIARIO.NUMPOL ,
           Q_INTERMEDIARIO.fecemi,
           Q_INTERMEDIARIO.CODRAMOCERT,
           Q_INTERMEDIARIO.MTOMONEDA,
           Q_INTERMEDIARIO.numrec,
           Q_INTERMEDIARIO.CODPOL,   
           Q_INTERMEDIARIO.FOPERINTER,
           Q_INTERMEDIARIO.NUMOPERINTER,
           Q_INTERMEDIARIO.CODINTER,
           Q_INTERMEDIARIO.TIPOOPERINTER,
           Q_INTERMEDIARIO.IDEREC,
           Q_INTERMEDIARIO.CODMONEDA,
           Q_INTERMEDIARIO.MONTOOPERINTERLOCAL,
           Q_INTERMEDIARIO.MONTOOPERINTERFORANEA,
           Q_INTERMEDIARIO.MONTOOPERORIGLOCAL,
           Q_INTERMEDIARIO.MONTOOPERORIGFORANEA,
           Q_INTERMEDIARIO.STSOPERINTER,
           Q_INTERMEDIARIO.FECSTS,
           Q_INTERMEDIARIO.FOPERINTERORIG,
           Q_INTERMEDIARIO.NUMOPERINTERORIG,
           Q_INTERMEDIARIO.NUMOBLIG,
           Q_INTERMEDIARIO.porcfondo,
           Q_INTERMEDIARIO.descoper,
           Q_INTERMEDIARIO.PORCCOM,
           RESUMEN.numoblig numoblig1,
           RESUMEN.codinter codinter1,
           RESUMEN.tipooperresumen,
           RESUMEN.descoperinter, 
           RESUMEN.mtooperloc,
           RESUMEN.mtoopermon,
           ANTICIPO.codinter codinter2,
           ANTICIPO.nroanticipo,
           ANTICIPO.fecanticipo,
           ANTICIPO.mtoanticipo,
           ANTICIPO.saldoanticipo,
           ANTICIPO.numoblig numoblig2
      from
           Q_INTERMEDIARIO ,  
           RESUMEN,
           ANTICIPO
      where
            Q_INTERMEDIARIO.CODINTER = RESUMEN.codinter
        and Q_INTERMEDIARIO.CODINTER = ANTICIPO.codinter
        and Q_INTERMEDIARIO.NUMOBLIG = RESUMEN.numoblig
        and Q_INTERMEDIARIO.NUMOBLIG = ANTICIPO.numoblig;

0 comentarios :

Publicar un comentario