Wie schreibt man einen gespeicherten Prozedur in oracle?
Ich bin neu in oracle nicht so sicher, wie zu schreiben der gespeicherten Prozedur in oracle. Derzeit bin ich googeln und Lesen von einigen Artikeln/blogs auf dem Netz auf der SP in oracle. Ich bin Anfang um einige Ideen darüber. Selbst dann habe ich folgenden einige Fragen.
Was ich versuche zu tun ist,
Ich habe eine Mitarbeiter-Tabelle mit emp_id, Region, Abteilung, Produkt, Titel usw.
Ich habe auch emp_update Tabelle mit emp_id, Spalte (was wird geändert), old_value, neuer_wert und Datum.
z.B. emp_update Tabelle wird eine Zeile für emp_id = 10, was sagt die region geändert von Asien nach Großbritannien am 30. April.
Einer anderen Zeile für die gleichen MA, die sagt Produkts geändert von A nach B am 30 April.
Also mehrere Einträge für denselben Mitarbeiter und auf dasselbe Datum.
Nun an diesem bestimmten Datum bei mir läuft ein cron-job, der ausgeführt wird mit diesem Sp zu aktualisieren employee-Tabelle, um diese updates.
z.B. Auf das Datum 30 April, update Mitarbeiter set region = UK, Product = B where emp_id = 10.
Möchte ich ausführen einer einzigen update-Anweisung für eine Mitarbeiter-mit all seinen updates von emp_update Tabelle auf das Datum.
Also im Grunde,
bekommen alle Mitarbeiter von emp_update mit update auf heute.
Durchlaufen, das Mitarbeiter-updates, assembple Sie in einem einzigen update-Anweisung und führen Sie dann das update-Abfrage.
wiederholen Sie den Vorgang für jeden Mitarbeiter.
Bitte helfen
EDIT 1:-
CREATE OR REPLACE
PROCEDURE SP_RUN_EMPLOYEE_UPDATES
IS
CURSOR
c_emp
IS
SELECT DISTINCT(employee_id) as employee_id FROM BI_EMPLOYEE_UPDATE WHERE EFFECTIVE_DATE = to_date('30-Apr-2012','dd-mm-yy');
BEGIN
FOR employee in c_emp
LOOP
CURSOR
c_emp_update
IS
SELECT * FROM BI_EMPLOYEE_UPDATE WHERE employee_id = :employee.employee_id AND EFFECTIVE_DATE = to_date('30-Apr-2012','dd-mm-yy');
FOR emp_update in c_emp_update
LOOP
-- dbms_output.put_line(emp_update.column_name);
END LOOP;
END LOOP;
END;
Derzeit das ist, was ich bisher getan habe
- alle Richtungen?
- Wollen Sie eine einzelne update-Anweisung oder brauchen Sie eine einzelne update-Anweisung?
- Siehe Oracle-Dokumentation: docs.oracle.com/cd/E11882_01/appdev.112/e25519/toc.htm Sie vielleicht etwas zu Lesen gibt, dann finden Sie Ihre Beispiele Liste.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Frage scheint weniger zu sein über gespeicherte Prozeduren und mehr über die Erstellung von dynamischen Abfragen. Im Grunde wollen Sie dies:
emp_update
mit dem heutigen Datum, sortiert nachemployee_id
UPDATE EMP SET <previous string here> WHERE EMPLOYEE_ID = <emp_id>
.