powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / select Переменая составного типа в in select...
13 сообщений из 13, страница 1 из 1
select Переменая составного типа в in select...
    #39251892
shaposh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PG 9.5

Переменные doc и res имеют один и тот же составной тип
В функции хочется не расписывая состав переменной (там порядка сотни полей) получить возвращаемые значения в конструкции
IN SELECT


for doc in SELECT sp.res FROM report.main_list(in_dtbeg, in_dtend, in_orguuid, in_with_children) sp
loop
.......................
end loop

ОШИБКА: столбец sp.res не существует

Подскажите правильный синтаксис для данной конструкции
...
Рейтинг: 0 / 0
select Переменая составного типа в in select...
    #39251911
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shaposh,

шапку report.main_list() приведите -- будем посмотреть.
...
Рейтинг: 0 / 0
select Переменая составного типа в in select...
    #39252258
shaposh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CREATE OR REPLACE FUNCTION report.main_list (
in_dtbeg timestamp,
in_dtend timestamp,
in_orguuid uuid,
in_with_children boolean
)
RETURNS TABLE (
res report.type_main_list_result
) AS
...
Рейтинг: 0 / 0
select Переменая составного типа в in select...
    #39252261
shaposh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CREATE TYPE report.type_main_list_result AS (
id BIGINT,
org_uuid UUID,
org_name VARCHAR(255),
org_department_name VARCHAR(255),
org_subdepartment_name VARCHAR(255),
kt_id INTEGER,
kt_count INTEGER,
kt_uuid UUID,
kt_number VARCHAR(50),
.............
Ну и так далее....
);
...
Рейтинг: 0 / 0
select Переменая составного типа в in select...
    #39252263
shaposh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так-то работает:
for doc in SELECT * FROM report.main_list(in_dtbeg, in_dtend, in_orguuid, in_with_children) sp
но как то некошерно оно....
...
Рейтинг: 0 / 0
select Переменая составного типа в in select...
    #39252357
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shaposhCREATE TYPE report.type_main_list_result AS (
id BIGINT,
org_uuid UUID,
org_name VARCHAR(255),
org_department_name VARCHAR(255),
org_subdepartment_name VARCHAR(255),
kt_id INTEGER,
kt_count INTEGER,
kt_uuid UUID,
kt_number VARCHAR(50),
.............
Ну и так далее....
);

а в этом "и так далее" есть поле под названием res? в этом и была суть вопроса qwwq, так что вы на него ещё не ответили.
...
Рейтинг: 0 / 0
select Переменая составного типа в in select...
    #39252444
shaposh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CREATE OR REPLACE FUNCTION report.main_list (
in_dtbeg timestamp,
in_dtend timestamp,
in_orguuid uuid,
in_with_children boolean
)
RETURNS TABLE (

-- ВНИМАТЕЛЬНО ЧИТАЕМ.... НЕ ТОРОПЯСЬ....
RES
-- ВОТ ОНО!


report.type_main_list_result
) AS
...
Рейтинг: 0 / 0
select Переменая составного типа в in select...
    #39252449
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shaposh,

Запрос `SELECT sp.res FROM report.main_list(in_dtbeg, in_dtend, in_orguuid, in_with_children) sp` (с нужными аргументами) отрабатывает как SQL (вне PL/pgSQL)?

И какая шапка у запроса `SELECT * FROM report.main_list(in_dtbeg, in_dtend, in_orguuid, in_with_children) sp`?
...
Рейтинг: 0 / 0
select Переменая составного типа в in select...
    #39252459
shaposh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тема закрыта -
Вопрос переформулирован с приложением тестового скрипта
...
Рейтинг: 0 / 0
select Переменая составного типа в in select...
    #39252467
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shaposh,

так делайте
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT 
 sp.id,
 sp.org_uuid,
 sp.org_name,
 sp.org_department_name,
 sp.org_subdepartment_name,
 sp.kt_id,
 sp.kt_count,
 sp.kt_uuid,
 sp.kt_number,
 .............
 sp."Ну и так далее".... 
FROM report.main_list(in_dtbeg, in_dtend, in_orguuid, in_with_children) sp
...
Рейтинг: 0 / 0
select Переменая составного типа в in select...
    #39252476
shaposh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну это решение как то очевидно и не интересно.
Если делать так, то не совсем непонятно зачем было огород городить с реализацией составных типов....
Точно так же могу по отдельности эти переменные как выходные параметры в исходной функции объявить.

100 полей в составном типе...
Хочется полаконичнее конструкцию
...
Рейтинг: 0 / 0
select Переменая составного типа в in select...
    #39252490
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shaposh,

тогда просто
Код: sql
1.
SELECT sp FROM report.main_list(in_dtbeg, in_dtend, in_orguuid, in_with_children) sp


который и есть ваш композит. а объявить как исходные параметры (часть RETURNS если правильно вас понял) возможно только с 8.4 версии постгреса, т.е. такая возможность была не всегда.
...
Рейтинг: 0 / 0
select Переменая составного типа в in select...
    #39252537
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shaposh не совсем непонятно зачем было огород городить с реализацией составных типов....


сделайте
,OUT rec "составной тип"
)
RETURNS Setof "составной тип"

и пользуйтесь.
SLECT (rec).* FROM fun()

т.е. тут приходится работать с тем, что дают, а не с интуициями.
там много где с синтакс конструкциями наваяли поперек интуитивных ожиданий.
азия-с(с).
привыкайте.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / select Переменая составного типа в in select...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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