vogste
Benutzer
- Beiträge
- 23
Hallo Leute,
ich brauche mal wieder Euren Fachverstand. Ich habe folgende Problematik.
Es gibt eine Tabelle Maschinen, Maschinen-Produkte, Maschinen-Prozesse, Maschinen-Positionen, Maschinen-Einbauten.
Jede Maschine kann aus x Maschinen-Produkten sowie y Maschinen-Prozessen und z Maschinen-Positionen bestehen.
Zu einem bestimmten Zeitpunkt werden x Maschinen-Produkte * z Maschinen-Positionen = Maschinen-Einbauten.
Jetzt muss zur Analyse zu jeder Maschine die Anzahl der Maschinen-Produkte, Maschinen-Prozesse, Maschinen-Positonen und Maschinen-Einbauten ermittelt werden.
Anschliessen sollen die erwarteten Maschinen-Einbauten mit den tatsächlich vorhandenen Einbauten verglichen werden.
Wenn die Anzahl der erwarteten und tatsächlichen Einbauten gleich ist, ist alles i.O. ansonsten soll die Maschine rausgeschrieben werden.
Jetzt hatte ich mal vor vielen Jahren einen Crashkurs PL/SQL, muss aber zu meiner Schande gestehen, dass wohl nichts, nicht viel hängen geblieben ist.
Hier meine kläglichen Versuche als Pseudocode:
Ich hoffe Ihr könnt mir helfen und mich wieder auf Spur bringen.
Danke und Gruss
Stephan
ich brauche mal wieder Euren Fachverstand. Ich habe folgende Problematik.
Es gibt eine Tabelle Maschinen, Maschinen-Produkte, Maschinen-Prozesse, Maschinen-Positionen, Maschinen-Einbauten.
Jede Maschine kann aus x Maschinen-Produkten sowie y Maschinen-Prozessen und z Maschinen-Positionen bestehen.
Zu einem bestimmten Zeitpunkt werden x Maschinen-Produkte * z Maschinen-Positionen = Maschinen-Einbauten.
Jetzt muss zur Analyse zu jeder Maschine die Anzahl der Maschinen-Produkte, Maschinen-Prozesse, Maschinen-Positonen und Maschinen-Einbauten ermittelt werden.
Anschliessen sollen die erwarteten Maschinen-Einbauten mit den tatsächlich vorhandenen Einbauten verglichen werden.
Wenn die Anzahl der erwarteten und tatsächlichen Einbauten gleich ist, ist alles i.O. ansonsten soll die Maschine rausgeschrieben werden.
Jetzt hatte ich mal vor vielen Jahren einen Crashkurs PL/SQL, muss aber zu meiner Schande gestehen, dass wohl nichts, nicht viel hängen geblieben ist.
Hier meine kläglichen Versuche als Pseudocode:
Code:
-- hier sollen die benötigen Variablen deklariert werden
DECLARE
-- variable nimmt maschinennummer auf
v_line_id VARCHAR2(40);
-- variable nimmt maschinenversion auf
v_line_ver VARCHAR2(40);
-- variable nimmt maschinencid auf
v_line_cid NUMBER(10,0);
-- array nimmt alle maschinencids auf
TYPE a_line_cid IS TABLE OF V_LINE_CID NOT NULL
INDEX BY NUMBER(10,0);
-- variable nimmt weggesicherte maschinencid auf
v_line_cid_save NUMBER(10,0);
-- variable die die anzahl aller maschinen aufnimmt
v_cnt_line NUMBER(10,0);
-- variable die die anzahl der maschinen-produkt beziehung aufnimmt
v_cnt_prop NUMBER(10,0);
-- variable die die anzahl der maschinen-prozess beziehung aufnimmt
v_cnt_mprc NUMBER(10,0);
-- variable die die anzahl der maschinen-position beziehung aufnimmt
v_cnt_poat NUMBER(10,0);
-- variable die die anzahl der einbauten ermittelt
v_cnt_mnt NUMBER(10,0);
-- variable die zur berechnung der summer aller erwarteten einbauten aufnimmt
v_cnt_sum NUMBER(10,0);
-- variale als zaehler für die while-schleife
v_cnt NUMBER(10,0) := 1;
-- hier beginnt die eigentliche Verabeitung
BEGIN
-- zuerst zählen der möglichen Maschinen für die while-Schleife
SELECT COUNT(c_id) INTO v_cnt_line FROM t_line_dat;
-- jetzt holen alle maschinencids in ein array zum anschliessenden arbeiten in schleife
SELECT c_id INTO a_line_cid FROM t_line_dat ORDER BY a_line_cid;
-- die while-Schleife soll jetzt für jede Zeile des Blocks ausgeführt werden
WHILE v_cnt <= v_cnt_line LOOP
-- jetzt für die erste maschinencid die maschinen-produkt menge ermitteln
SELECT COUNT(c_id) INTO v_cnt_prop FROM t_line_prop where c_id_1 = a_line_cid;
-- jetzt für die erste maschinencid die maschinen-prositions menge ermitteln
SELECT COUNT(c_id) INTO v_cnt_poat FROM t_line_poat where c_id_1 = a_line_cid;
-- jetzt für die erste maschinencid die maschinen-einbauten menge ermitteln
SELECT COUNT(c_id) INTO v_cnt_mnt FROM t_line_mnt where c_id_1 = a_line_cid;
-- berechnen der erwarteten maschinen-einbauten
v_cnt_sum := v_cnt_prop * v_cnt_poat;
/* hier fehlerbehandlung, wenn die erwartete anzahl einbauten von der
tatsächlichen anzahl abweicht soll die maschinencid ausgegeben werden
am besten in eine csv Datei*/
IF v_cnt_sum <> v_cnt_mnt
THEN v_line_cid_save := v_line_cid;
END IF;
-- Ende der while-Schleife
END LOOP;
-- Ende der Logik...
END;
-- ich bin am Ende, irgendwann mal was gelernt nie mehr gebraucht jetzt nix mehr verstehen
Ich hoffe Ihr könnt mir helfen und mich wieder auf Spur bringen.
Danke und Gruss
Stephan