動的クエリで FOR ループを使用する関数があります。理由はわかりませんが、postgres はレコード変数から単一のフィールドを取得できません...それでもエラーが発生します
SELECT (1,token).id - syntax error
?
これからフィールド値を取得する機会はありますか?
CREATE OR REPLACE FUNCTION mobile666(v_limit integer, v_offset integer) RETURNS void AS
$BODY$
DECLARE
r record;
x text[];
kap text;
i_attrs text[] := ARRAY[
['test','id','value'],
['test', 'id','value'],
['test', 'id','value'],
['test', 'id','value']
];
quer text;
BEGIN
FOREACH x SLICE 1 IN ARRAY i_attrs LOOP
FOR r in EXECUTE
'SELECT * FROM ' || x[1]::regclass || ' WHERE ' || quote_ident(x[2]) || ' IS NOT NULL' LOOP
execute 'SELECT '|| r || '.' || quote_ident(x[2]) INTO kap;
RAISE NOTICE 'id %', kap;
execute 'SELECT '|| r || '.' || quote_ident(x[5]) INTO kap;
RAISE NOTICE 'id %', kap;
END LOOP;
END LOOP;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 400;
CREATE TABLE test
(
id integer NOT NULL,
value text NOT NULL,
CONSTRAINT pk_test PRIMARY KEY (id )
)
WITH (
OIDS=FALSE
);
INSERT INTO test(
id, value)
VALUES (1,'token'),(2,'smt'),(3,'cocc');