2016-04-05 6 views
1

Ich habe eine Prozedur in PLSQL, die 5000 Datensätze aus einer Tabelle auswählt und in einer anderen Tabelle einfügt.Oracle-Ausführungsprozedur basierend auf einer Tabellenanzahl

Die JMS-Warteschlange wählt dann die Daten aus der Warteschlange aus und verarbeitet sie. Wenn die Warteschlange leer ist, führe ich die Prozedur erneut aus, um weitere 5000 Datensätze auszuwählen.

Gibt es in plsql eine Möglichkeit, dies zu automatisieren? Immer wenn die Anzahl der Warteschlangentabellen 0 ist, wird die Prozedur erneut ausgeführt.

Antwort

2

Sie können eine Oracle-Job erstellen, die alle jetzt läuft und dann neue Datensätze einfügen, wenn die Warteschlange leer ist: DBMS_JOB vs DBMS_SCHEDULER

Es ist ziemlich einfach aussieht, etwas zu planen: https://stackoverflow.com/a/27820057/6019417

Erstellen Sie eine Prozedur

PROCEDURE p1 
IS 
    v_count number := 0; 
BEGIN 
    select count(1) into v_count from my_table; 
    if v_count = 0 then 
    -- add 5000 rows 
    end if; 
END; 

nennen es in DBMS_JOBS für jedes Mal, wenn Sie mögen:

Anruf das gleiche in DBMS_JOBS jedes Mal, wenn Sie möchten (in meinem Beispiel ist es alle 10 Minuten):

VARIABLE jobno number; 
BEGIN 
    DBMS_JOB.SUBMIT(:jobno, 'p1', SYSDATE, 'trunc(sysdate,''MI'')+60/1440'); 
    COMMIT; 
END; 
/
Verwandte Themen