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

Schreibe einen Kommentar