Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Возвращение набора записей с GROUP данными / 3 сообщений из 3, страница 1 из 1
15.09.2004, 13:58
    #32695690
BinaryBoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение набора записей с GROUP данными
В добровольно-принудительном порядке был вынужден переезжать на СУБД PostgreSQL так что некоторых тонкостей пока еще не уловил. А вопрос следующий:

Есть функция, возвращающая SETOF record . Внутри я возвращаю записи следующим образом

for result in select DID, count(*) as VCount from visits
group by DID loop
return next result;
end loop;

При попытке извлечь данные из функции ругается:
"Wrong record type supplied in RETURN NEXT"

Если убираю группировку - все прекрасно работает. Кто-нить поделитесь соображениями, чего не так делаю?
...
Рейтинг: 0 / 0
15.09.2004, 21:55
    #32696639
vadimm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение набора записей с GROUP данными
Попробуй так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TYPE typ1 AS (DID int, VCount int);

CREATE OR REPLACE FUNCTION public.f1()
  RETURNS SETOF typ1 AS
'
DECLARE
	sql TEXT;
        ret typ1%ROWTYPE;
BEGIN
	sql := \'select DID, count(*) as VCount from visits group by DID\';
	FOR ret IN EXECUTE sql LOOP
		RETURN NEXT ret;
	END LOOP;
	RETURN;
END
'
  LANGUAGE 'plpgsql' VOLATILE;
...
Рейтинг: 0 / 0
16.09.2004, 10:07
    #32696946
BinaryBoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение набора записей с GROUP данными
Спасибо, я уже нашел в чем проблема.
Вся фишка в том, что я хочу обойтись без создания дополнительных типов.

Все просто, при использовании агрегатных функций, возвращаемый тип данных у которых не определен (т.е. все кроме min и max ) нужно явно приводить полученное поле к одному из типов:

for result in select DID, ( cast(count(*) as int4) ) as VCount from visits
group by DID loop
return next result;
end loop;
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Возвращение набора записей с GROUP данными / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]