Привет всем!
Вышла тут 8.4 Постгре версия. В ней появился RETURNS TABLE statement
Вопрос, подскажите, знатоки, как реализовать вот такую задачу, используя RETURNS TABLE, а не создание собственного Type (как это сделал я). Мне зачастую приходится делать функции, в которых надо выбрать 1-3 поля из 1 таблицы и все поля из другой...
CREATE OR REPLACE FUNCTION webgame_getquestionsbystepquest(sid bigint, dis integer) RETURNS SETOF type_svs AS $BODY$ DECLARE DATA type_svs%rowtype; DECLARE status_str varchar; DECLARE sql varchar; BEGIN status_str:=''; IF sid > 0 THEN status_str := status_str || ' AND qs.sid =' || sid; END IF; IF dis >= 0 THEN status_str := status_str || ' AND qs.disable =' || dis; END IF; sql:='SELECT qs.sid, qs.disable, q.* FROM qs, q WHERE qs.q_id = q.id ' || status_str || ' ORDER BY qs.id ASC '; --RAISE EXCEPTION '%',sql; FOR DATA IN EXECUTE sql LOOP RETURN next DATA; end loop; RETURN; END; $BODY$ LANGUAGE 'plpgsql' IMMUTABLE SECURITY DEFINER COST 100 ROWS 1000;
Таблица q: id, name, sname, count Таблица qs: id,q_id,sid,disable,pid, mail, phone Тип, который мне пришлось создать: type_svs: int, int, int, varchar, varchar, int