Problem to execute the procedure
Date: Tue, 28 Dec 1999 10:31:05 +0100
Message-ID: <849vvq$na3$1_at_naxos.belnet.be>
Hi,
[Quoted] I made a procedure of the following views because the views worked to slow.
[Quoted] But when I run the procedure he give me errors. and I don't know which error
there is in it.
[Quoted] 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:
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_DATUMFROM 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)) ASAMR, [Quoted] 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
[Quoted] LD*SE_INTREST)*TRUNC(MONTHS_BETWEEN( NVL(R_REKOPGELOST,SYSDATE), R_DATUMSCHULD))+GREATEST(ROUND(R_BEDRAGSCHULD*SE_SCHADELOOSSTELLING),SE_MINI MUM) AS TOTEXCL,
[Quoted] 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, [Quoted] DOSSIER.DOS_HUISNR, DOSSIER.DOS_POSTNR, DOSSIER.DOS_GEMEENTE, DOSSIER.DOS_LAND, SCHULDEISER.SE_STRAAT, SCHULDEISER.SE_HUISNR, SCHULDEISER.SE_POSTNR, [Quoted] 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,
[Quoted] 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,
[Quoted] 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,
[Quoted] 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,
[Quoted] 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
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, [Quoted] 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 [Quoted] 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 [Quoted] chade,t_totexcl,t_laatstevanad_datum, t_somvankostav,st_datum,st_bedragsh,st_lot,st_betincl,st_avincl,st_lobincl,l [Quoted] 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_ [Quoted] 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, [Quoted] 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); -- VARIABLES FOR ERROR MESSAGES. ERRNUM NUMBER; ERRMSG VARCHAR2(150); 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) [Quoted] 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; [Quoted] 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'); -- FOR r_rekening IN c_rekening -- LOOP -- -- bepaling van kostav -- SELECT ROUND(r_rekening.r_bedragschuld/r_rekening.se_verhogingsvperc)+r_rekening.se [Quoted] _verhogingsv into s_hsse from dual; -- SELECT ROUND(r_rekening.r_bedragschuld*r_rekening.se_intrest) into s_mir from dual; -- SELECT TRUNC(MONTHS_BETWEEN(NVL(r_rekening.r_rekopgelost,sysdate),r_rekening.r_datu [Quoted] mschuld)) into s_amr from dual; -- SELECT ROUND(r_rekening.r_bedragschuld*r_rekening.se_intrest)*TRUNC(MONTHS_BETWEEN( NVL(r_rekening.r_rekopgelost,sysdate),r_rekening.r_datumschuld)) into s_tir from dual; -- SELECT GREATEST(ROUND(r_rekening.r_bedragschuld*r_rekening.se_schadeloosstelling),r [Quoted] _rekening.se_minimum) into s_schade from dual; -- SELECTReceived on Tue Dec 28 1999 - 10:31:05 CET
(ROUND(r_rekening.r_bedragschuld/r_rekening.se_verhogingsvperc)+r_rekening.s
e_verhogingsv)+ROUND(r_rekening.r_bedragschuld*r_rekening.se_intrest)*TRUNC( MONTHS_BETWEEN(NVL(r_rekening.r_rekopgelost,sysdate),r_rekening.r_datumschul d))+GREATEST(ROUND(r_rekening.r_bedragschuld*r_rekening.se_schadeloosstellin [Quoted] g),r_rekening.se_minimum) into s_totexcl from dual; -- insert into temprekening values(r_rekening.rek_id, -- r_rekening.r_sa_id, -- r_rekening.r_se_id, -- r_rekening.se_naam, -- r_rekening.r_naamse, -- r_rekening.r_volgnummerse, -- r_rekening.r_refklient, -- r_rekening.r_faknummer, -- r_rekening.r_reden, -- r_rekening.r_datumschuld, -- r_rekening.r_bedragschuld, -- r_rekening.r_inputdatum, -- s_hsse, -- s_mir, -- s_amr, -- s_tir, -- s_schade, -- s_totexcl, -- r_rekening.sa_naam, -- r_rekening.r_wn, -- r_rekening.se_id, -- r_rekening.sa_dos, -- r_rekening.r_rekopgelost, -- r_rekening.r_rekafgerekend, -- r_rekening.sa_vnm_ven, -- r_rekening.dos_straat, -- r_rekening.dos_huisnr, -- r_rekening.dos_postnr, -- r_rekening.dos_gemeente, -- r_rekening.dos_land, -- r_rekening.se_straat, -- r_rekening.se_huisnr, -- r_rekening.se_postnr, -- r_rekening.se_gemeente, -- r_rekening.se_dos, -- r_rekening.se_afrhsperc, -- r_rekening.se_afrhs, -- r_rekening.se_afrcom); -- -- END LOOP; 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 [Quoted] 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; -- FOR r_rekeningcl in c_rekeningcl -- LOOP -- s_totaal1 := r_rekeningcl.t_totexcl + NVL(r_rekeningcl.t_somvankostav,0); -- END LOOP; 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. [Quoted] I hope I tried it already good. Thanks, Stéphane D'Hoedt