Как вернуть несколько строк в PostgreSQL с помощью RECORD?

Я пытаюсь создать функцию, которая запускает SQL-запрос к нескольким таблицам и выводит результирующую таблицу из запроса. В итоговой таблице будет несколько строк. У меня большие трудности с этим, и я читал сообщения, в которых предлагается использовать RETURN NEXT , но мне тоже не удалось заставить это работать. Насколько я понимаю, RECORD можно использовать, потому что он принимает значения введенных в него данных. Вот мой код на данный момент:

CREATE OR REPLACE FUNCTION
    most_docs()
RETURNS
    SETOF RECORD
AS $$
DECLARE
    result RECORD;
BEGIN
    CREATE VIEW MOSTDOC AS
    SELECT P.country, COUNT(P.country) AS cnt
    FROM Producer P, Movie M, ProducerMovie PM
    WHERE M.title = PM.title
    AND M.year = PM.year
    AND P.name = PM.name
    AND M.genre = 'Documentary'
    GROUP BY P.country;

    SELECT DISTINCT M.country INTO result
    FROM MOSTDOC M
    WHERE M.cnt = (SELECT MAX(M.cnt)
    FROM MOSTDOC M);

    RETURN result;
END;
$$ LANGUAGE plpgsql;

Любая помощь будет принята с благодарностью. Спасибо.

---------- Word in Progress code

CREATE OR REPLACE FUNCTION
    most_docs()
RETURNS
    SETOF RECORD
AS $$
DECLARE
result RECORD
BEGIN
    CREATE VIEW MOSTDOC AS
    SELECT P.country, COUNT(P.country) AS cnt
    FROM Producer P, Movie M, ProducerMovie PM
    WHERE M.title = PM.title
    AND M.year = PM.year
    AND P.name = PM.name
    AND M.genre = 'Documentary'
    GROUP BY P.country;

    RETURN QUERY SELECT DISTINCT M.country
    FROM MOSTDOC M
    WHERE M.cnt = (SELECT MAX(M.cnt)
    FROM MOSTDOC M);
END;
$$ LANGUAGE plpgsql;
6
задан mu is too short 12 August 2011 в 00:35
поделиться