Dynamiczne przekazywanie nazw kolumn dla zmiennej rekordu w PostgreSQL
Używając PostgreSQL, wartości kolumn z tabeli dla pierwszego rekordu są przechowywane w zmiennej rekordowej. na przykład: niech zmienna będzie:recordvar
recordvar.columnname
podaje wartość podanej nazwy kolumny. Zdefiniujęcolumname
w zmiennej:
var := columnname
Zamiastcolumnname
jeśli zastąpię zmienną, tj.recordvar.var
, to nie działa.
Daj mi znać, jak postępować w tej sytuacji. Oto przykładowy kod:
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;