Ich glaube einen Weg gefunden zu haben, aber komme trotzdem nicht weiter. Meine Annahme ist, dass mir hier eine Cursor-Variable weiterhelfen könnte:
Code:
CREATE OR REPLACE FUNCTION fn_testarray(OUT nValue numeric, OUT sRemark varchar) RETURNS record AS
$$declare
rowData datatable%ROWTYPE;
cData refcursor;
sTable varchar;
sPCon varchar;
begin
sTable := 'datatable';
sPCon := 'UO2<2+>';
open cData for execute 'select * from ' || sTable || ' where pcon = ''' || sPCon || '''';
loop
fetch cData into rowData;
raise notice 'PCon: %, DataType: %, CalcMode: %, Value: %', rowData.pcon, rowData.datatype, rowData.calcmode, rowData.value;
end loop;
close cData;
nValue := 1.0;
sRemark := NULL;
return;
end;$$
LANGUAGE 'plpgsql'; Bei dieser Abfrage dürften nur eine Handvoll an Datensätzen abfallen. Tatsächlich werden mit raise notice nur NULLen ausgegeben - und das ohne Ende. Die Schleife scheint nicht korrekt beendet zu werden.
Dieses Beispiel habe ich aus der Dokumentation: PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: Cursors
Tips?
Eremit
Lesezeichen