ukulele
Datenbank-Guru
- Beiträge
- 5.175
Bisher habe ich, um Datensätze zu durchlaufen und "zu verarbeiten", in MSSQL öfter mal zum Cursor gegriffen. Nützlich ist das vor allem wenn der Code zur Verarbeitung der Information hin und wieder mal auf unerwartete Fehler trifft und man wissen muss wo es scheitert.
Ich hab so einen Beispielcode mal umgebaut aber PG verhält sich nicht wie von mir erwartet:
PG sagt mir erfolgreich ausgeführt. Ich bekomme aber keine Daten aus dem Select angezeigt.
Man kann in PG wohl keinen Select oder Print oder etwas in der Form innerhalb des Cursors machen, wird mein Select aus dem selben Grund ignoriert? Gibt es eine sinnvollere Vorgehensweise?
Ich hab so einen Beispielcode mal umgebaut aber PG verhält sich nicht wie von mir erwartet:
Code:
CREATE TEMP TABLE vLog(
pk UUID NOT NULL,
error VARCHAR(100) NOT NULL
);
DO $$
DECLARE vPK UUID;
vData_html VARCHAR(10485760);
vData_xml XML;
BEGIN
DECLARE cursor3 CURSOR FOR
SELECT pk,
data_html
FROM "public"."files"
WHERE data_xml IS NULL
LIMIT 3;
BEGIN
OPEN cursor3;
FETCH cursor3 INTO vPK,vData_html;
INSERT INTO vLog(pk,error) VALUES(vPK,'test');
CLOSE cursor3;
END;
END $$;
SELECT pk,error
FROM vLog
ORDER BY pk,error;
DROP TABLE vLog;
Man kann in PG wohl keinen Select oder Print oder etwas in der Form innerhalb des Cursors machen, wird mein Select aus dem selben Grund ignoriert? Gibt es eine sinnvollere Vorgehensweise?