Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> Problem to execute the procedure

Problem to execute the procedure

From: Stéphane D'Hoedt <sdhoedt_at_softhome.net>
Date: Tue, 28 Dec 1999 10:31:05 +0100
Message-ID: <849vvq$na3$1@naxos.belnet.be>


Hi,

I made a procedure of the following views because the views worked to slow. But when I run the procedure he give me errors. and I don't know which error there is in it.
I will show you the views and the procedure that I already made: I have 5 views already in my procedure. VIEWS
the 1st:
CREATE OR REPLACE VIEW QADRESSEN ( DOS_ID, AD_DOS, REK_ID, DOS_STRAAT, DOS_HUISNR, DOS_POSTNR, DOS_GEMEENTE, DOS_LAND, AD_DATUM, AD_STRAAT, AD_HUISNR, AD_POSTNR, AD_GEMEENTE, AD_LAND, AD_BRON, AD_PRIJS, KOSTAV,
R_INPUTDATUM, AD_INPUTDATUM, AD_WN, AD_ID  ) AS SELECT DISTINCT DOSSIER.DOS_ID, ADRESSEN.AD_DOS, REKENING.REK_ID,

       DOSSIER.DOS_STRAAT, DOSSIER.DOS_HUISNR, DOSSIER.DOS_POSTNR,
       DOSSIER.DOS_GEMEENTE,
       DOSSIER.DOS_LAND, ADRESSEN.AD_DATUM, ADRESSEN.AD_STRAAT,
ADRESSEN.AD_HUISNR,
       ADRESSEN.AD_POSTNR, ADRESSEN.AD_GEMEENTE, ADRESSEN.AD_LAND,
ADRESSEN.AD_BRON,
       ADRESSEN.AD_PRIJS, DECODE(SIGN(AD_PRIJS-400),-1,400,AD_PRIJS) AS
KOSTAV,
       REKENING.R_INPUTDATUM,
       ADRESSEN.AD_INPUTDATUM, ADRESSEN.AD_WN, ADRESSEN.AD_ID
FROM SCHULDENAAR, REKENING, DOSSIER, ADRESSEN WHERE REKENING.R_SA_ID = SCHULDENAAR.SA_ID AND
      SCHULDENAAR.SA_DOS = DOSSIER.DOS_ID AND
      DOSSIER.DOS_ID = ADRESSEN.AD_DOS AND
      (((REKENING.R_INPUTDATUM)<=AD_INPUTDATUM))
ORDER BY DOSSIER.DOS_ID, REKENING.REK_ID, ADRESSEN.AD_DATUM DESC the 2nd:
CREATE OR REPLACE VIEW QADRESSENT ( DOS_ID, REK_ID, SOMVANKOSTAV, LAATSTEVANAD_DATUM ) AS SELECT DISTINCT QADRESSEN.DOS_ID, QADRESSEN.REK_ID,
       SUM(QADRESSEN.KOSTAV) AS SOMVANKOSTAV,
       MAX(QADRESSEN.AD_DATUM) AS LAATSTEVANAD_DATUM
FROM QADRESSEN
GROUP BY QADRESSEN.DOS_ID, QADRESSEN.REK_ID the 3rd:
CREATE OR REPLACE VIEW QREKENING ( REK_ID,
R_SA_ID, R_SE_ID, SE_NAAM, R_NAAMSE,
R_VOLGNUMMERSE, R_REFKLIENT, R_FAKNUMMER, R_REDEN,
R_DATUMSCHULD, R_BEDRAGSCHULD, R_INPUTDATUM, HSSE,
MIR, AMR, TIR, SCHADE,
TOTEXCL, SA_NAAM, R_WN, SE_ID,
SA_DOS, R_REKOPGELOST, R_REKAFGEREKEND, SA_VNM_VEN, DOS_STRAAT, DOS_HUISNR, DOS_POSTNR, DOS_GEMEENTE, DOS_LAND, SE_STRAAT, SE_HUISNR, SE_POSTNR, SE_GEMEENTE, SE_DOS, SE_AFRHSPERC, SE_AFRHS, SE_AFRCOM ) AS SELECT DISTINCT REKENING.REK_ID, REKENING.R_SA_ID, REKENING.R_SE_ID,
       SCHULDEISER.SE_NAAM, REKENING.R_NAAMSE, REKENING.R_VOLGNUMMERSE,
       REKENING.R_REFKLIENT,
       REKENING.R_FAKNUMMER, REKENING.R_REDEN, REKENING.R_DATUMSCHULD,
       REKENING.R_BEDRAGSCHULD,
       REKENING.R_INPUTDATUM,
       (ROUND(R_BEDRAGSCHULD/SE_VERHOGINGSVPERC)+SE_VERHOGINGSV) AS HSSE,
       ROUND(R_BEDRAGSCHULD*SE_INTREST) AS MIR,
       TRUNC(MONTHS_BETWEEN( NVL(R_REKOPGELOST,SYSDATE), R_DATUMSCHULD)) AS
AMR, OUND(R_BEDRAGSCHULD*SE_INTREST)*TRUNC(MONTHS_BETWEEN( NVL(R_REKOPGELOST,SYSD ATE), R_DATUMSCHULD)) AS TIR,
       GREATEST(ROUND(R_BEDRAGSCHULD*SE_SCHADELOOSSTELLING),SE_MINIMUM) AS SCHADE,
(ROUND(R_BEDRAGSCHULD/SE_VERHOGINGSVPERC)+SE_VERHOGINGSV)+ROUND(R_BEDRAGSCHU
LD*SE_INTREST)*TRUNC(MONTHS_BETWEEN( NVL(R_REKOPGELOST,SYSDATE), R_DATUMSCHULD))+GREATEST(ROUND(R_BEDRAGSCHULD*SE_SCHADELOOSSTELLING),SE_MINI MUM) AS TOTEXCL,
       SCHULDENAAR.SA_NAAM,
       REKENING.R_WN, SCHULDEISER.SE_ID, SCHULDENAAR.SA_DOS,
REKENING.R_REKOPGELOST,
       REKENING.R_REKAFGEREKEND, SCHULDENAAR.SA_VNM_VEN, DOSSIER.DOS_STRAAT,
       DOSSIER.DOS_HUISNR, DOSSIER.DOS_POSTNR, DOSSIER.DOS_GEMEENTE,
DOSSIER.DOS_LAND,
       SCHULDEISER.SE_STRAAT, SCHULDEISER.SE_HUISNR, SCHULDEISER.SE_POSTNR,
       SCHULDEISER.SE_GEMEENTE, SCHULDEISER.SE_DOS,
SCHULDEISER.SE_AFRHSPERC,
       SCHULDEISER.SE_AFRHS, SCHULDEISER.SE_AFRCOM
FROM DOSSIER,SCHULDENAAR,SCHULDEISER, REKENING
WHERE DOSSIER.DOS_ID = SCHULDENAAR.SA_DOS AND
      SCHULDEISER.SE_ID = REKENING.R_SE_ID AND
      SCHULDENAAR.SA_ID = REKENING.R_SA_ID AND
      (((REKENING.REK_ID) IS NOT NULL))

the 4th:
CREATE OR REPLACE VIEW QREKINCL ( SA_DOS, R_SA_ID, REK_ID, ST_REK, R_SE_ID,
SE_NAAM, R_NAAMSE, R_VOLGNUMMERSE, R_REFKLIENT, R_FAKNUMMER, R_DATUMSCHULD, R_BEDRAGSCHULD, R_INPUTDATUM, HSSE, MIR, AMR, TIR,
SCHADE, TOTEXCL, LAATSTEVANAD_DATUM, SOMVANKOSTAV, TOTAAL1, ST_DATUM, ST_BEDRAGSH, MISH,
AMSH, TISH, TOTSH, ST_LOT,
ST_BETINCL, ST_AVINCL, ST_LOBINCL, LO_DATUM, LO_BEDRAG, LO_KOST, TOTAAL2, MI,
AM, TI, TOTAAL, SA_NAAM,
R_WN, SE_ID, R_REDEN, R_REKOPGELOST,
R_REKAFGEREKEND, SA_VNM_VEN, DOS_STRAAT, DOS_HUISNR, DOS_POSTNR, DOS_GEMEENTE, DOS_LAND, SE_STRAAT, SE_HUISNR, SE_POSTNR, SE_GEMEENTE, SE_DOS, SE_AFRHSPERC, SE_AFRHS, SE_AFRCOM ) AS SELECT DISTINCT QREKENING.SA_DOS, QREKENING.R_SA_ID, QREKENING.REK_ID, STUKKEN.ST_REK, QREKENING.R_SE_ID,         QREKENING.SE_NAAM, QREKENING.R_NAAMSE, QREKENING.R_VOLGNUMMERSE, QREKENING.R_REFKLIENT, QREKENING.R_FAKNUMMER,         QREKENING.R_DATUMSCHULD, QREKENING.R_BEDRAGSCHULD, QREKENING.R_INPUTDATUM, QREKENING.HSSE, QREKENING.MIR,         QREKENING.AMR, QREKENING.TIR, QREKENING.SCHADE, QREKENING.TOTEXCL, QADRESSENT.LAATSTEVANAD_DATUM AS LAATSTEVANAD_DATUM,         QADRESSENT.SOMVANKOSTAV AS SOMVANKOSTAV,  QREKENING.TOTEXCL+NVL(QADRESSENT.SOMVANKOSTAV,0) AS TOTAAL1, STUKKEN.ST_DATUM, STUKKEN.ST_BEDRAGSH,

        ROUND(STUKKEN.ST_BEDRAGSH*0.01) AS MISH,
        TRUNC(MONTHS_BETWEEN(NVL(R_REKOPGELOST,SYSDATE),ST_DATUM)) AS AMSH,

ROUND(STUKKEN.ST_BEDRAGSH*0.01)*TRUNC(MONTHS_BETWEEN(NVL(R_REKOPGELOST,SYSDA TE),ST_DATUM)) AS TISH, ST_BEDRAGSH+ROUND(STUKKEN.ST_BEDRAGSH*0.01)*TRUNC(MONTHS_BETWEEN(NVL(R_REKOP GELOST,SYSDATE),ST_DATUM)) AS TOTSH,
        STUKKEN.ST_LOT, STUKKEN.ST_BETINCL, STUKKEN.ST_AVINCL, STUKKEN.ST_LOBINCL, LOONAFSTAND.LO_DATUM,         LOONAFSTAND.LO_BEDRAG, LOONAFSTAND.LO_KOST,
(ST_BEDRAGSH+ROUND(STUKKEN.ST_BEDRAGSH*0.01)*TRUNC(MONTHS_BETWEEN(NVL(R_REKO
PGELOST,SYSDATE), ST_DATUM)))-NVL(ST_AVINCL,0)-NVL(ST_LOBINCL,0)+NVL(SOMVANKOSTAV,0)+NVL(LO_KO ST,0)+NVL(ST_BETINCL,0) AS TOTAAL2,
 NVL(ROUND(STUKKEN.ST_BEDRAGSH*0.01),QREKENING.MIR) AS MI, NVL(TRUNC(MONTHS_BETWEEN(NVL(R_REKOPGELOST,SYSDATE),ST_DATUM)),         QREKENING.AMR) AS AM, DECODE(NVL(ROUND(STUKKEN.ST_BEDRAGSH*0.01)*TRUNC(MONTHS_BETWEEN(NVL(R_REKOPG ELOST,SYSDATE),ST_DATUM)),0),0,QREKENING.TIR, ROUND(STUKKEN.ST_BEDRAGSH*0.01)*TRUNC(MONTHS_BETWEEN(NVL(R_REKOPGELOST,SYSDA TE),ST_DATUM))+ QREKENING.TIR-(TRUNC(MONTHS_BETWEEN(NVL(R_REKOPGELOST,SYSDATE),ST_DATUM))*QR EKENING.MIR)) AS TI,
NVL(
     (ST_BEDRAGSH+ ROUND(STUKKEN.ST_BEDRAGSH*0.01)*TRUNC(MONTHS_BETWEEN
(NVL(R_REKOPGELOST,SYSDATE),ST_DATUM)))
     -NVL
(ST_AVINCL,0)-NVL(ST_LOBINCL,0)+NVL(SOMVANKOSTAV,0)+NVL(LO_KOST,0)+NVL(ST_BE
TINCL,0),QREKENING.TOTEXCL
     +NVL(QADRESSENT.SOMVANKOSTAV,0)
   ) AS TOTAAL,
 QREKENING.SA_NAAM, QREKENING.R_WN, QREKENING.SE_ID, QREKENING.R_REDEN, QREKENING.R_REKOPGELOST,
 QREKENING.R_REKAFGEREKEND, QREKENING.SA_VNM_VEN, QREKENING.DOS_STRAAT, QREKENING.DOS_HUISNR,
 QREKENING.DOS_POSTNR, QREKENING.DOS_GEMEENTE, QREKENING.DOS_LAND,  QREKENING.SE_STRAAT, QREKENING.SE_HUISNR, QREKENING.SE_POSTNR, QREKENING.SE_GEMEENTE,
 QREKENING.SE_DOS, QREKENING.SE_AFRHSPERC, QREKENING.SE_AFRHS, QREKENING.SE_AFRCOM
FROM QADRESSENT, QREKENING, LOONAFSTAND, STUKKEN

WHERE QREKENING.REK_ID = LOONAFSTAND.LO_REK(+) AND
      QREKENING.REK_ID = STUKKEN.ST_REK(+)  AND
      QREKENING.REK_ID = QADRESSENT.REK_ID(+)

the 5th:
CREATE OR REPLACE VIEW QBETALINGT ( BT_REK, AANTALVANBT_ID, LAATSTEVANBT_DATUM, LAATSTEVANBT_AARD, SOMVANBT_RECTUS, SOMVANBT_SE, BT_TOTAAL ) AS SELECT DISTINCT BETALING.BT_REK, COUNT(BETALING.BT_ID) AS AANTALVANBT_ID,

 MAX(BETALING.BT_DATUM) AS LAATSTEVANBT_DATUM,
 MAX(BETALING.BT_AARD) AS LAATSTEVANBT_AARD,
 SUM(BETALING.BT_RECTUS) AS SOMVANBT_RECTUS,
 SUM(BETALING.BT_SE) AS SOMVANBT_SE,
 SUM(NVL(BT_SE,0)+NVL(BT_RECTUS,0)) AS BT_TOTAAL
FROM BETALING
GROUP BY BETALING.BT_REK And this is the procedure that I already made(tried): CREATE OR REPLACE PROCEDURE SALDO2
IS

 cursor c_adressen is
 select dos_id, ad_dos, rek_id, dos_straat, dos_huisnr, dos_postnr, dos_gemeente, dos_land, ad_datum,

        ad_straat, ad_huisnr, ad_postnr, ad_gemeente, ad_land, ad_bron, ad_prijs, r_inputdatum, ad_inputdatum, ad_wn, ad_id  from schuldenaar, rekening, dossier, adressen  where rekening.R_SA_ID = schuldenaar.SA_ID  and schuldenaar.SA_ID = dossier.DOS_ID  and dossier.DOS_ID = adressen.AD_DOS
 and rekening.R_INPUTDATUM <= ad_inputdatum  order by dossier.DOS_ID, rekening.REK_ID, adressen.AD_DATUM desc; --
 r_adressen c_adressen%ROWTYPE;
--
  cursor c_adressent is
  select t_dos_id,t_rek_id,t_kostav,t_ad_datum   from tempadressen;
  --group by tempadressen.T_DOS_ID,tempadressen.T_REK_ID; --
  r_adressent c_adressent%ROWTYPE;

 cursor c_rekening is
 select rek_id, r_sa_id, r_se_id, se_naam, r_naamse, r_volgnummerse, r_refklient, r_faknummer,

        r_reden, r_datumschuld, r_bedragschuld, r_inputdatum, sa_naam, r_wn, se_id, sa_dos,
  r_rekopgelost, r_rekafgerekend, sa_vnm_ven, dos_straat, dos_huisnr, dos_postnr, dos_gemeente,
  dos_land, se_straat, se_huisnr, se_postnr, se_gemeente, se_dos, se_afrhsperc, se_afrhs, se_afrcom,
  se_verhogingsvperc, se_verhogingsv, se_intrest, se_schadeloosstelling, se_minimum
 from dossier, schuldenaar, schuldeiser, rekening

 where dossier.DOS_ID = schuldenaar.SA_DOS
 and schuldeiser.SE_ID = rekening.R_SE_ID
 and schuldenaar.SA_ID = rekening.R_SA_ID
 and rekening.REK_ID IS NOT NULL;

 r_rekening c_rekening%ROWTYPE;

  cursor c_rekeningcl is
  select
t_sa_dos,t_r_sa_id,tr_rek_id,st_rek,t_r_se_id,t_se_naam,t_r_naamse,t_r_volgn ummerse,t_r_refklient,t_r_faknummer,

t_r_datumschuld,t_r_bedragschuld,t_r_inputdatum,t_hsse,t_mir,t_amr,t_tir,t_s chade,t_totexcl,t_laatstevanad_datum,

t_somvankostav,st_datum,st_bedragsh,st_lot,st_betincl,st_avincl,st_lobincl,l o_datum,lo_bedrag,lo_kost,t_sa_naam,

t_r_wn,t_se_id,t_r_reden,t_r_rekopgelost,t_rekafgerekend,t_sa_vnm_ven,t_dos_ straat,t_dos_huisnr,t_dos_postnr,

t_dos_gemeente,t_dos_land,t_se_straat,t_se_huisnr,t_se_postnr,t_se_gemeente, t_se_dos,t_se_afrhsperc,t_se_afrhs,t_se_afrcom   from tempadressent,temprekening,loonafstand,stukken   where temprekening.Tr_REK_ID = loonafstand.LO_REK(+)   and temprekening.Tr_REK_ID = stukken.ST_REK(+)   and temprekening.TR_REK_ID = tempadressent.T_REK_ID(+);

  r_rekeningcl c_rekeningcl%ROWTYPE;

 cursor c_betalingt is
 select bt_rek, bt_id, bt_datum, bt_aard, bt_rectus, bt_se  from betaling;
 --group by betaling.bt_rek;
--
 r_betalingt c_betalingt%ROWTYPE;

 s_kostav number(15);
 s_hsse number(15);
 s_mir number(15);
 s_amr number(4);
 s_tir number(15);
 s_schade number(15);
 s_totexcl number(15);
 s_eerstevansa_naam varchar2(50);
 s_eerstevanr_sa_id number(15);
 s_aantalvanrek_id number(15);
 s_somvanr_bedragschuld number(15);
 s_somvanhsse number(15);
 s_somvanti number(15);
 s_somvanschade number(15);
 s_maxvanst_tot number(15);
 s_somvantotaal number(15);
 s_somvanbt_totaal number(15);
 s_te_betalen number(15);
 s_totaal1 number(15);
 s_laatstevanad_datum date;
 s_somvankostav number(15);
 s_mish number(15);
 s_amsh number(15);
 s_tish number(15);
 s_totsh number(15);
 s_totaal2 number(15);
 s_mi number(15);
 s_am number(15);
 s_ti number(15);
 s_totaal number(15);
 s_aantalvanbt_id number(15);
 s_laatstevanbt_datum date;
 s_laatstevanbt_aard varchar2(4);
 s_somvanbt_rectus number(15);
 s_somvanbt_se number(15);
 s_bt_totaal number(15);



BEGIN
dbms_output.PUT_LINE('voor open');

   FOR r_adressen IN c_adressen(25051)
   LOOP
    SELECT DECODE(SIGN(r_adressen.ad_prijs-400),-1,400,r_adressen.ad_prijs) into s_kostav from dual;

   END LOOP;
    insert into tempadressen values(r_adressen.dos_id,

                                 r_adressen.ad_dos,
         r_adressen.rek_id,
         r_adressen.dos_straat,
         r_adressen.dos_huisnr,
         r_adressen.dos_postnr,
         r_adressen.dos_gemeente,
         r_adressen.dos_land,
                                 r_adressen.ad_datum,
         r_adressen.ad_straat,
         r_adressen.ad_huisnr,
         r_adressen.ad_postnr,
         r_adressen.ad_gemeente,
         r_adressen.ad_land,
         r_adressen.ad_bron,
         r_adressen.ad_prijs,
         s_kostav,
         r_adressen.r_inputdatum,
         r_adressen.ad_inputdatum,
         r_adressen.ad_wn,
         r_adressen.ad_id);


   dbms_output.put_line('einde adressen');

--

   FOR r_adressen IN c_adressent
   LOOP
   SELECT SUM(r_adressent.t_kostav) into s_somvankostav from dual;    SELECT MAX(r_adressent.t_ad_datum) into s_laatstevanad_datum from dual;    END LOOP;
   insert into tempadressent values(r_adressent.t_dos_id,

                                 r_adressent.t_rek_id,
         s_somvankostav,
         s_laatstevanad_datum);


   dbms_output.put_line('einde adressent');

   OPEN c_betalingt;
   FETCH c_betalingt into r_betalingt;
   WHILE c_betalingt%FOUND
   LOOP
     SELECT COUNT(r_betalingt.bt_id) into s_aantalvanbt_id from dual;
  SELECT MAX(r_betalingt.bt_datum) into s_laatstevanbt_datum from dual;
  SELECT MAX(r_betalingt.bt_aard) into s_laatstevanbt_aard from dual;
  SELECT SUM(r_betalingt.bt_rectus) into s_somvanbt_rectus from dual;
  SELECT SUM(r_betalingt.bt_se) into s_somvanbt_se from dual;
  SELECT SUM(NVL(r_betalingt.bt_se,0)+NVL(r_betalingt.bt_rectus,0)) into
s_bt_totaal from dual;
  insert into tempbetalingt
values(r_betalingt.bt_rek,s_aantalvanbt_id,s_laatstevanbt_datum,s_laatstevan
bt_aard,s_somvanbt_rectus,s_somvanbt_se,s_bt_totaal);
   FETCH c_betalingt into r_betalingt;

   END LOOP;
   dbms_output.put_line('einde betalingt');    CLOSE c_betalingt;

   OPEN c_rekeningcl;
   FETCH c_rekeningcl into r_rekeningcl;    CLOSE c_rekeningcl;

  commit;
EXCEPTION
 WHEN OTHERS THEN
  ERRNUM := SQLCODE;
    ERRMSG := SUBSTR(SQLERRM,1,150);
    DBMS_OUTPUT.PUT_LINE( 'ERRNUM :'||ERRNUM ||' MSG :'|| ERRMSG);     RAISE_APPLICATION_ERROR(-20099,'Andere error'); END SALDO2;
/

I hope there is someone that can help me with it. I don't know anymore what to do.
I hope I tried it already good.

Thanks,
Stéphane D'Hoedt Received on Tue Dec 28 1999 - 03:31:05 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US