Oracle: Dynamischen SQL Befehl in einer LOOP

In Oracle können Sie auch dynamische SQL Statements als Datenquelle für SQL Abfragen nutzen. Aber nicht nur diese Technik wird im folgenden Beispiel erklärt.

Zusätzlich können Sie die Daten des dynamischen SQL Statements auch in einer Schleife (Loop) abarbeiten lassen und dadurch auch mehrere Befehl für jeden Datensatz (Record) verarbeiten. Sie haben dadurch die Möglichkeit, komplexe Verarbeitungen (Befehle) in mehrere einzelne Befehle auszuteilen (zu splitten):

create or replace PROCEDURE TEST (in_Filter IN number)
IS Ssql varchar2(2000); TYPE c1 IS REF CURSOR; the_cursor c1;
BEGIN -- SQL Basis (Basisstatement) Ssql := 'select distinct kunde.id as kunde_id FROM customer kunde WHERE kunde.status = 1'; -- Filter and das Statement anhängen (wenn ein Filter vorhanden) if (in_Filter is not null) then Ssql := Ssql || ' AND kunde.code = ' || in_Filter; end if; -- Daten auslesen OPEN the_cursor FOR Ssql; -- Für jeden gefundenen Kunden Aktionen verarbeiten LOOP fetch the_cursor into tmp_kunde_id; EXIT WHEN the_cursor%NOTFOUND; -- Historie löschen delete from customer_state where customer = tmp_kunde_id and week 0 end loop; close the_cursor;
END;

Dieser Artikel hat Dir geholfen ?
.. und Dir nerviges Ausprobieren, Suchen und Zeit erspart ?

Dann würde ich mich sehr freuen, wenn Du diese werbefreie Hilfeseite mit einer kleinen Anerkennung unterstützen würdest.
Vielen Dank !
PayPal Donate QR Code

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

2 × 5 =