3 Stimmen

In Bezug auf die Aufteilung von PL/SQL-Anwendungen in mehrere Einheiten

Hier ist mein Bewerbungsablauf.

Ich habe einen ref cursor, der mit allen meinen Mitarbeiter-IDs gefüllt ist. Es ist eigentlich nur eine Identifikationsnummer.

Aber jetzt möchte ich eine Menge von Informationen für jeden Mitarbeiter abrufen...(wie aus dem ref cursor abgerufen). Es handelt sich nicht einfach um Daten, sondern auch um eine Menge berechneter, abgeleiteter Daten. Die Art von Ableitung, die einfacher über Cursor und Prozeduren usw. durchgeführt werden kann....

Zum Beispiel die Summe aller Zeitintervalle, in denen ein Mitarbeiter in Abteilung 78 stationiert war...(das könnte nur eine der Spalten für jeden Mitarbeiter sein).

Also denke ich, dass ich dies mit einer wirklich großen (mit groß meine ich wirklich schwer zu pflegen, schwer zu verstehen, schwer zu optimieren, schwer zu wiederverwenden, umzuarbeiten.. usw. etc.) SQL-Abfrage erreichen könnte, aber das wäre wirklich nur als letzter Ausweg etwas, das ich tun würde.

Also versuche ich Möglichkeiten zu finden, die gesamte Macht von PL/SQL zu nutzen, um dies in so viele separate Einheiten (vielleicht Funktionen oder Prozeduren) wie möglich aufzuteilen, um dies auf einfache und elegante Weise zu bewältigen...

Ich denke, dass eine Möglichkeit, Datensätze (ref cursor wahrscheinlich) zu vereinen, meine Probleme lösen würde... Ich habe mir bisher einige Dinge im Internet angesehen und manches schien mir vielversprechend, insbesondere das Pipelining... obwohl ich nicht wirklich sicher bin, ob das das ist, was ich brauche..

Zusammenfassend glaube ich, dass ich irgendwie den resultierenden ref cursor (eine wirklich große Tabelle, eine Spalte für die ID und etwa 40 andere Spalten, jede mit spezifischen Informationen über den Besitzer dieser ID.) durch viele Prozeduren zusammenstellen muss, um ihn dann an meine Server-seitige Anwendung zurückzugeben und damit umzugehen. (In diesem Fall in Excel exportieren.)

Ich bin wirklich ratlos.. Hoffe, dass mir jemand mit mehr Erfahrung bei diesem Problem helfen kann.

FA

1voto

yael alfasi Punkte 682

Ich bin mir nicht sicher, ob das ist, was du willst, oder wie oft du dieses Ding ausführen musst.
Aber da es sehr aufwendig klingt, brauchst du die Daten vielleicht nicht auf dem neuesten Stand in diesem Moment.
Wenn es nur einmal am Tag oder weniger ist, kannst du eine Tabelle mit den Mitarbeiter-IDs erstellen,
und separate MERGE-Updates verwenden, um die verschiedenen Felder zu berechnen.
Dann kann die Anwendung die Daten von dieser Tabelle abrufen.
Du kannst einen Job haben, der dies immer dann berechnet, wenn du aktualisierte Daten benötigst.
Du kannst hier über das Merge-Kommando lesen wiki und speziell für Oracle hier oracle.
Da du separate Befehle verwendest, kannst du es natürlich in verschiedenen Prozeduren durchführen, wenn das praktisch ist.
zum Beispiel:

begin
execute immediate 'truncate table temp_table';

insert into temp_table select emp_id from emps;

MERGE INTO temp_table a USING ( select name ) b on (a.emp_id = b.emp_id ) WHEN MATCHED THEN UPDATE SET a.name = b.name; ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X