Я пытаюсь создать функцию, которая запускает 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;