CREATE PROCEDURE "demoadm".b_journal()
DEFINE dw_oper varchar(50,0);
DEFINE err_id int;
DEFINE err_sql int;
DEFINE err_isam int;
DEFINE err_txt varchar(150,0);
DEFINE err_msg varchar(250,0);
DEFINE i int;
DEFINE pv_action char(1);
DEFINE sv_mandant char(2);
DEFINE sv_skto_nr char(15);
DEFINE sv_jahr decimal(4,0);
DEFINE sv_periode decimal(2,0);
DEFINE sv_soll decimal(13,2);
DEFINE sv_haben decimal(13,2);
LET dw_oper = 'Start';
LET err_id = 0;
BEGIN WORK;
SET LOCK MODE TO WAIT 10;
BEGIN
ON EXCEPTION
SET err_sql, err_isam, err_txt
LET err_msg = 'ERR[' ||err_sql|| ',' ||err_isam|| ',' ||err_id|| ']:' ||err_txt||
' # ' ||dw_oper;
SYSTEM 'echo "B_journal: '||err_msg||'" >> /var/tmp/log.dwb';
END EXCEPTION;
FOREACH dw_curs1 FOR SELECT
l.er_id,
l.lv_action,
l.lv_mandant,
l.lv_skto_nr,
l.lv_jahr,
l.lv_periode,
l.lv_soll,
l.lv_haben
INTO
err_id,
pv_action,
sv_mandant,
sv_skto_nr,
sv_jahr,
sv_periode,
sv_soll,
sv_haben
FROM DWE_journal l
ON EXCEPTION
UPDATE DWE_journal SET er_retry = er_retry + 1 WHERE er_id = err_id ;
END EXCEPTION;
UPDATE sr_sh_skto SET
soll = soll + sv_soll,
haben = haben + sv_haben
WHERE (skto_nr = sv_skto_nr)
AND (mandant = sv_mandant)
AND (jahr = sv_jahr)
AND (periode = sv_periode)
;
IF DBINFO('sqlca.sqlerrd2') < 1 THEN
INSERT INTO sr_sh_skto (
skto_nr,
mandant,
jahr,
periode,
soll,
haben
)
VALUES (
sv_skto_nr,
sv_mandant,
sv_jahr,
sv_periode,
sv_soll,
sv_haben
);
END IF
LET dw_oper = 'Deleting from DWE_journal';
DELETE FROM DWE_journal WHERE CURRENT OF dw_curs1;
END FOREACH
END
SET LOCK MODE TO NOT WAIT;
COMMIT WORK;
END PROCEDURE
HTML-Autor: Rohloff, Datenbank: demodb, Datenstand: 31.05.00 17:07