не работает функция

Доброго времени суток.
У меня проблемка - ищу уже второй день подряд, ответ на свой вопрос.
Мне нужно, чтобы функция отдала мне содержимое таблицы(в данном случае).
Нашел у вас на форуму замечательный ответ по сабжу http://postgresql.ru.net/node/178974#comment-875
В частности интересует второй изложенный способ. Сделал все как советовал автор ответа, но postgres выдает ошибку :
ERROR: function result type must be text because of OUT parameters
SQL state: 42P13

Вот листинг функции:

CREATE OR REPLACE FUNCTION test.fm (
	out o_name text) 
returns setof RECORD 
AS $$
 DECLARE
  rec RECORD;
BEGIN
	FOR rec IN EXECUTE 'select t.name from test.tb t'  
	LOOP
		RETURN next rec;
	END LOOP;
END;
$$ LANGUAGE plpgsql

Интуиция подсказывает, что в теле цикла должно быть, что-то типа:
o_name := r.name;

Пожалуйста подскажите, как правильно...
За ранее благодарен!

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Вот надумал кое что... решил

Вот надумал кое что... решил попробовать возвращать таблицу:

CREATE OR REPLACE FUNCTION test.fm (
	--out o_name text
	) 
returns TABLE(o_name text)
AS $$
 DECLARE
  rec RECORD;
BEGIN
	FOR rec IN EXECUTE 'select t.name from test.tb t'  
	LOOP
		o_name := rec.name;
		RETURN next;
	END LOOP;
END;
$$ LANGUAGE plpgsql

ЗЫ. интуиция не подвела.
ЗЫЫ. но уверен что есть вариант, где не нужно возвращать таблицу, а достаточно указать выходные параметры типа foo(out o_name text,...) и так далее... Так что я по прежнему жду ваших ответов и надеюсь, что не пройдете мимо :)

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023