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;