Dynamische Übergabe von Spaltennamen für eine Datensatzvariable in PostgreSQL

Mit PostgreSQL werden Spaltenwerte aus einer Tabelle für den 1. Datensatz in einer Datensatzvariablen gespeichert. Beispiel: Die Variable sei:recordvar

recordvar.columnname

Gibt den Wert des angegebenen Spaltennamens an. Ich werde das definierencolumname in einer Variablen:

var := columnname

Anstelle voncolumnname wenn ich durch die Variable ersetze, d.h.recordvar.var, es funktioniert nicht.

Bitte lassen Sie mich wissen, wie in dieser Situation vorzugehen ist. Es folgt der Beispielcode:

CREATE OR REPLACE FUNCTION getrowdata(id numeric, table_name character varying)
RETURNS SETOF void AS
$BODY$ 
DECLARE

srowdata record;
reqfield character varying;
value numeric;


BEGIN

RAISE NOTICE 'id: %',id; 
reqfield:= 'columnname';

EXECUTE 'select * from datas.'||table_name||' WHERE id = '||id into srowdata;

RAISE NOTICE 'srowdata: %',srowdata; 

RAISE NOTICE 'srowdatadata.columnname: %',srowdata.columnname;

value:= srowdata.reqfield;

RAISE NOTICE 'value: %',value;


END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;

Antworten auf die Frage(1)

Ihre Antwort auf die Frage