Hallo,
ich möchte in PostgreSQL eine Funktion schreiben die 2 Übergabeparameter besitzt. Der eine Parameter ist ein SQL Befehl und der andere ein CRC Hash. Die Funktion soll einen CRC Hash von dem Befehl (rein Text) erzeugen und mit dem angehängten Hash vergleichen. Bei Übereinstimmung soll der SQL Befehl ausgeführt werden.
Eine CRC Funktion ist vorhanden. Die untenstehende Abfrage soll nur die richtigen Werte ausgeben.
CREATE OR REPLACE FUNCTION read_data(befehl text)
RETURNS SETOF record AS
$BODY$
DECLARE
r record;
BEGIN
FOR r IN EXECUTE befehl
LOOP
RETURN NEXT r;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql';
Und das ist die Fehlermeldung wenn ich
SELECT read_data('SELECT * FROM test WHERE id = 1')
ausführe:
ERROR: set-valued function called in context that cannot accept a set
KONTEXT: PL/pgSQL function “read_data” line 9 at RETURN NEXT********** Fehler **********
ERROR: set-valued function called in context that cannot accept a set
SQL Status:0A000
Kontext:PL/pgSQL function “read_data” line 9 at RETURN NEXT
Vielen Dank im Voraus!