Bonjour,
J'ai une grosse base de données postgres sur un même serveur, et pour simplifier le travail, je veux récupérer des différentes tables les données intéressantes (les colonnes). pour les regrouper dans 1 seule table.
J'ai procédé ainsi :
CREATE TYPE essai AS (user_id varchar, username varchar, First_Names varchar, Last_name varchar, company_id varchar, company_name varchar, rate varchar, project_id varchar, project_name varchar);
CREATE OR REPLACE FUNCTION transform_table() RETURNS SETOF essai AS
$BODY$
DECLARE
rec record;
o essai;
BEGIN
FOR rec IN SELECT user_id FROM acs_users_all GROUP BY user_id ORDER BY user_id
FOR rec IN SELECT company_id FROM companies
LOOP
o.user_id:=rec.user_id;
SELECT* INTO o.username, o.First_Names, o.Last_name FROM acs_users_all WHERE user_id = rec.user_id;
SELECT* INTO o.company_name FROM companies WHERE company_id = rec.company_id;
o.project_id:=rec.project_id;
SELECT*INTO o.project_name FROM projects WHERE project_id = rec.project_id;
o.user_id:=rec.user_id;
SELECT *INTO o.rate FROM TABLE_java WHERE user_id = rec.user_id;
RETURN NEXT o;
END LOOP;
RETURN ;
end;
$BODY$
LANGUAGE 'plpgsql' ;
mes message d'erreur sont :
ERROR: record "rec" is not assigned yet
DETAIL: The tuple structure of a not-yet-assigned record is indeterminate.
CONTEXT: PL/pgSQL function "transform_table" line 5 at for over select rows
Je ne pense pas que ce soit une très bonne methode ? est ce que je dois utiliser dblink?
Merci
Partager