powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Можно ли как то не ручным способом типизировать вывод из функции произвольной стурктуры?
3 сообщений из 3, страница 1 из 1
Можно ли как то не ручным способом типизировать вывод из функции произвольной стурктуры?
    #40130823
Dzianis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ругается на то, что должен быть список определений столбцов.
Есть ли какой то путь, как заставить его сформироваться автоматически?
(через темповые таблицы, json или любой способ "прочитать датасет" не указывая явно With и список колонок и типов данных ... )

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
CREATE OR REPLACE FUNCTION tmp()
    RETURNS SETOF refcursor 
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
    ROWS 1000

AS $BODY$
DECLARE
	ref1 refcursor := 'main'; 
BEGIN
	OPEN ref1 FOR
	SELECT * FROM crosstab(
					'SELECT	employee_id, MIN(order_date) as min_date, EXTRACT(MONTH FROM order_date)::INT as MONTH, COUNT(*)::INT as c
					FROM	ORDERS O
					GROUP BY EXTRACT(MONTH FROM order_date), employee_id
					ORDER BY 1',
					'SELECT DISTINCT EXTRACT(MONTH FROM order_date)::INT as MONTH
					 FROM	ORDERS O'
				);

RETURN NEXT ref1;
END;
$BODY$;


SELECT	*
INTO C
FROM	tmp();
...
Рейтинг: 0 / 0
Можно ли как то не ручным способом типизировать вывод из функции произвольной стурктуры?
    #40131004
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dzianis,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION cursortojsonset(curpdata refcursor)
RETURNS SETOF jsonb
LANGUAGE plpgsql
AS $function$
declare
  rvRecord record;
begin
  loop
    fetch curpData into rvRecord;
    exit when not found;
    return next to_jsonb(rvRecord);
  end loop;
  close curpData;
  return;
end;
$function$
;




Использование

Код: plsql
1.
2.
SELECT j, j->'employee_id'
FROM cursortojsonset(tmp()) as j;
...
Рейтинг: 0 / 0
Можно ли как то не ручным способом типизировать вывод из функции произвольной стурктуры?
    #40131121
Dzianis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111, не стартануло.
Не хочет работать именно на уровне
Код: sql
1.
2.
OPEN ref1 FOR
	SELECT * FROM crosstab(



Требует определения списка столбцов.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Можно ли как то не ручным способом типизировать вывод из функции произвольной стурктуры?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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