Direkte Verarbeitungs-Abfrage mit Cursor
Hintergrund
Man möchte eine Vielzahl von Datensätzen verarbeiten oder aktualisieren, muss ggf. aber vielleicht für jeden Datensatz eine Funktion oder Prozedur aufrufen. Gleichzeitig möchte man nicht eine spezielle Prozedur dafür erst schreiben müssen.
Umsetzung
Im iSQL mit `begin` und `end` einen Block schreiben, in dem ein Cursor (sh. Cursors in SQL Anywhere) über die Datensätze loopt und einzeln verarbeitet:
begin
FOR ds AS cur_ds NO SCROLL CURSOR FOR SELECT * FROM tabellenname WHERE ist_aktiv = 'Y' ORDER BY id
FOR UPDATE
DO
-- irgendeine Datenverarbeitung ...
UPDATE tabellenname
SET ist_verarbeitet = 'Y'
WHERE CURRENT OF cur_ds;
END FOR;
end
No Comments