DECLARE
ret tavp;
tRec record;
fdata smallint[];
fnickname varchar[];
BEGIN
FOR tRec IN SELECT id,nickname FROM users_contact WHERE phonenumber = phone_number LOOP
fdata:=array_append(fdata, tRec.id);
ret:=('id',fdata);
fnickname:=array_append(fnickname,tRec.nickname);
ret:=('nicknames',fnickname);
END LOOP;
RETURN NEXT ret;
END;
Результат запроса вот такой получается.
(nicknames,"{onzone,istan}")
Но я хочу получить вот такой результат.
(id,"{1,2}")
(nicknames,"{onzone,istan}")
Я понимаю, что у меня при прохождении цикла переопределяется переменная ret. Из-за этого соотвественно выводится только 1 результат. Но т.к у меня нет опыта работы с SQL я не могу составить норм алгоритм, чтобы сделать норм выборку. Если кто сталкивался с данной проблемой. Помогите советом плз.