powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Возвращение набора записей с GROUP данными
3 сообщений из 3, страница 1 из 1
Возвращение набора записей с GROUP данными
    #32695690
BinaryBoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В добровольно-принудительном порядке был вынужден переезжать на СУБД 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
Возвращение набора записей с GROUP данными
    #32696639
vadimm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так:
Код: 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
Возвращение набора записей с GROUP данными
    #32696946
BinaryBoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, я уже нашел в чем проблема.
Вся фишка в том, что я хочу обойтись без создания дополнительных типов.

Все просто, при использовании агрегатных функций, возвращаемый тип данных у которых не определен (т.е. все кроме 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
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Возвращение набора записей с GROUP данными
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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