CREATE DBA PROCEDURE "demoadm".p_01hier_kst(
a_hier char(5) -- hierarchy name (short)
)
DEFINE er_msg varchar(100,0);
DEFINE h_nr int; -- kst_hier:nr
DEFINE h_bez char(30); -- kst_hier:ext_bez
DEFINE i int;
DEFINE l_nr int;
DEFINE l_id char(15);
DEFINE l_bez char(30);
DEFINE vv int;
DEFINE v0 char(15);
DEFINE v1 char(15);
DEFINE v2 char(15);
DEFINE v3 char(15);
DEFINE v4 char(15);
DEFINE v5 char(15);
DEFINE v6 char(15);
DEFINE v7 char(15);
DEFINE v8 char(15);
DEFINE v9 char(15);
DEFINE vbez0 char(30);
DEFINE vbez1 char(30);
DEFINE vbez2 char(30);
DEFINE vbez3 char(30);
DEFINE vbez4 char(30);
DEFINE vbez5 char(30);
DEFINE vbez6 char(30);
DEFINE vbez7 char(30);
DEFINE vbez8 char(30);
DEFINE vbez9 char(30);
LET i=0;
DELETE FROM hier_kst_hn WHERE (hier_nr = a_hier) AND (mandant = '01');
DELETE FROM hier_kst_10 WHERE (hier_nr = a_hier) AND (mandant = '01');
FOREACH SELECT nr,ext_bez INTO h_nr,h_bez FROM demo01:kst_hier
WHERE (ext_nr = a_hier) AND (pruef = 1)
LET i = i + 1;
END FOREACH
IF i <> 1 THEN -- Hierarchy does not exist or is inconsistent
LET er_msg = 'Hierarchy: ' || a_hier || ' not found or inconsistent';
RAISE EXCEPTION -90,0,er_msg;
END IF
-- OK Hierarchy can be processed
INSERT INTO hier_kst_hn (mandant,hier_nr,hier_name) VALUES ('01',a_hier,h_bez);
FOREACH SELECT nr, ext_nr, ext_bez, vater INTO l_nr, l_id, l_bez, vv
FROM demo01:ksth_k
WHERE (hier_nr = h_nr) AND (kst = 1)
-- We have a leaf now we must trace path up to the root
LET vbez0,vbez1,vbez2,vbez3,vbez4,vbez5,vbez6,vbez7,vbez8 = ' ' , ' ' , ' ' , ' ' , ' ' ,
' ' , ' ' , ' ' , ' ' ;
LET vbez9 = ' ' ;
LET v0,v1,v2,v3,v4,v5,v6,v7,v8 = ' ',' ',' ',' ',' ',' ',' ',' ',' ' ;
LET v9 = ' ' ;
WHILE vv <> 0
LET vbez9,vbez8,vbez7,vbez6,vbez5,vbez4,vbez3,vbez2,vbez1 = vbez8,vbez7,vbez6,vbez5,
vbez4,vbez3,vbez2,vbez1,vbez0 ;
LET v9,v8,v7,v6,v5,v4,v3,v2,v1 = v8,v7,v6,v5,v4,v3,v2,v1,v0 ;
SELECT ext_nr, ext_bez, vater INTO v0, vbez0, vv
FROM demo01:ksth_k k
WHERE (k.nr = vv) AND (k.hier_nr = h_nr) ;
END WHILE
INSERT INTO hier_kst_10
VALUES ('01',a_hier,l_id,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,
vbez0,vbez1,vbez2,vbez3,vbez4,vbez5,vbez6,vbez7,vbez8,vbez9);
END FOREACH
END PROCEDURE
HTML-Autor: Rohloff, Datenbank: demodb, Datenstand: 31.05.00 17:07