Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Problem to execute the procedure
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_IDFROM 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:
SUM(QADRESSEN.KOSTAV) AS SOMVANKOSTAV, MAX(QADRESSEN.AD_DATUM) AS LAATSTEVANAD_DATUMFROM QADRESSEN
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,
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)) ASAMR, OUND(R_BEDRAGSCHULD*SE_INTREST)*TRUNC(MONTHS_BETWEEN( NVL(R_REKOPGELOST,SYSD ATE), R_DATUMSCHULD)) AS TIR,
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_AFRCOMFROM 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_TOTAALFROM BETALING
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_IDand 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);
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');
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)) intos_bt_totaal from dual;
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;
OPEN c_rekeningcl;
FETCH c_rekeningcl into r_rekeningcl;
CLOSE c_rekeningcl;
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
![]() |
![]() |