powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Промежуточные результаты в функциях.
12 сообщений из 12, страница 1 из 1
Промежуточные результаты в функциях.
    #39153970
kolts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если у меня в функциях создаются промежуточные таблицы с которыми я дальше в этой же функции буду работать, как их сохранять?
Кроме создания временных таблиц и перевода таблицы в массив и наоборот не нашел ничего.Какой способ более предпочтительный?
...
Рейтинг: 0 / 0
Промежуточные результаты в функциях.
    #39154232
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koltsЕсли у меня в функциях создаются промежуточные таблицы с которыми я дальше в этой же функции буду работать, как их сохранять?
Кроме создания временных таблиц и перевода таблицы в массив и наоборот не нашел ничего.Какой способ более предпочтительный?

Лучше вообще так не делать...
А так почитайте как работать с "WITH"...
...
Рейтинг: 0 / 0
Промежуточные результаты в функциях.
    #39154281
kolts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лучше без промежуточных результатов? Почему?
С оператором with тоже знаком, забыл упомянуть. Использовать лучше его? В принципе можно любой из трех способов использовать, но можно ли передать таблицу в качестве параметра(не в виде массива) и задать переменную типа "таблица".
...
Рейтинг: 0 / 0
Промежуточные результаты в функциях.
    #39154327
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koltsЛучше без промежуточных результатов? Почему?
С оператором with тоже знаком, забыл упомянуть. Использовать лучше его? В принципе можно любой из трех способов использовать, но можно ли передать таблицу в качестве параметра(не в виде массива) и задать переменную типа "таблица".

Насколько мне известно этого сделать нельзя.
Но можно сделать "обратное" ч/з view или функции возвращающие RecordSet.

Т.е. не получать "таблицу" параметром, а использовать функцию (например) возвращающую нужную таблицу.

Можно еще "поиграть" с курсорами и временными таблицами...
Но IMHO нужно отучаться от императивного подхода при работе с БД.
Т.к. в PostgreSQL это особенно трудно.
...
Рейтинг: 0 / 0
Промежуточные результаты в функциях.
    #39154342
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koltsЛучше без промежуточных результатов? Почему?
странный вопрос. Почему быстрее считать в уме, чем записывать промежуточно на бумажку?
Базовое понятие в БД - кортеж
http://citforum.ru/database/osbd/glava_16.shtml
По другому это на аппСервере с ООП и в другом ЯП
...
Рейтинг: 0 / 0
Промежуточные результаты в функциях.
    #39154500
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123koltsЛучше без промежуточных результатов? Почему?
странный вопрос. Почему быстрее считать в уме, чем записывать промежуточно на бумажку?
Базовое понятие в БД - кортеж
http://citforum.ru/database/osbd/glava_16.shtml
По другому это на аппСервере с ООП и в другом ЯП
вообще--то будь в пг реализована табличная переменная с передачей по ссылке -- это тоже было бы "вычисление в уме" без записи--писи.

но её нет. и это не просто печалька, это боль.

передача массивов или жейсонов не вариант --- так как всякий раз передаётся копия (якобы внутре передача по ссылке, но т.к. "исходное" может лежать на диске -- быть полем записи таблицы -- заботимся, якобы, чтобы не переписать помимо апдейта)=> всякое [каждое] изменение такого "объекта" -- полное копирование с пришиванием рюшечки. даже если в цыкле. даже если объявили переменную сами, руками (вот тут вроде бы и можно вычислить, что она уж точно не "поле на диске") . Хотя внутре "c" оно возможно сделать экономнее -- см. string_agg array_agg и т.п. агрегаты. там где передача ссылки на агрегат через internal переменную.

что--то можно в plperl и т.п. [pltcl/plpython/..] -- совсем не надо никаких левых аппСерверов -- в перле вполне себе и хеш--таблички и массивы имеются. и передача ссылок на них. только вот пёрл -- язык типа для любителей брейн--факкинга.
ну и в "true c" , для умельцев не попадать в ногу, стреляя в неё в упор.
...
Рейтинг: 0 / 0
Промежуточные результаты в функциях.
    #39154535
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqвообще--то будь в пг реализована табличная переменная с передачей по ссылке -- это тоже было бы "вычисление в уме" без записи--писи.

но её нет. и это не просто печалька, это боль.


Это не печалька, а осознанное решение!
SQL - декларативный ЯП.
Хочешь императивщину иди в "песочницу".

Этим PostgreSQL мне и нравится.
Что SQL там SQL, а не FoxPro. ;-)
...
Рейтинг: 0 / 0
Промежуточные результаты в функциях.
    #39154567
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulqwwqвообще--то будь в пг реализована табличная переменная с передачей по ссылке -- это тоже было бы "вычисление в уме" без записи--писи.

но её нет. и это не просто печалька, это боль.


Это не печалька, а осознанное решение!
SQL - декларативный ЯП.
Хочешь императивщину иди в "песочницу".

Этим PostgreSQL мне и нравится.
Что SQL там SQL, а не FoxPro. ;-)много же вас, , путающих декларативность с немощью.

чем задание виртуальной таблицы - т.е. табличной переменной, мешает декларативности?
[ну введите декларативное CREATE LOCAL IN MEMORY TABLE [USING BLOCK ENGINE], если такие упоротые. я не против.] (/*для блокировочника перезапись по месту -- не криминал*/).
осознанно только геморойность реализации -- есть такой паттерн -- "зелёный виноград" . у дедушки крылова хорошо описан.
замечательно освоен разрабами пж. примеров -- завались. не будем о грустном. им денех не плотют. да и не миллион индусов там. жалко их.

к тому же и речь -- не об собственно SQL , а о пл ПгСкл -- вот это вот "пл" ничего не говорит декларанто--фапперам/шликкерам?
...
Рейтинг: 0 / 0
Промежуточные результаты в функциях.
    #39154785
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqвообще--то будь в пг реализована табличная переменная с передачей по ссылке -- это тоже было бы "вычисление в уме" без записи--писи.
было озвучено "что лучше" без конкретной задачи.
- лучше мыть руки перед едой
- лучше sql чем курсор
- в крайнем случае используем курсор
- потом временная таблица в оперативке на коннект (есть?)
- потом постоянная бумажка для записи (таблица постоянная)
Есть это в PosgreSQL?
...
Рейтинг: 0 / 0
Промежуточные результаты в функциях.
    #39154851
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123qwwqвообще--то будь в пг реализована табличная переменная с передачей по ссылке -- это тоже было бы "вычисление в уме" без записи--писи.
было озвучено "что лучше" без конкретной задачи.
- лучше мыть руки перед едой
- лучше sql чем курсор
- в крайнем случае используем курсор
- потом временная таблица в оперативке на коннект (есть?)
- потом постоянная бумажка для записи (таблица постоянная)
Есть это в PosgreSQL?
а говорили, что "дети у нас хорошие ..."
а выглядите -- как руками сделанные

когда и если вы научитесь изменять данные в курсоре -- велкам
когда и если временная таблица не будет отражена в системных, и будет доступна на стендбае -- велкам
когда и если записи в ней, когда она локальна, будут не версионны (конкурентов то всё одно нет) -- т.е. копироваться как целое, а "блокировочны" -- т.е. доступны на изменение точечно -- т.е. "по--ссылке" -- велкам

пока же всё -- через одно место, после которого руки таки лучше мыть
и блаародных донов, считающих что всё делать через это место -- труеЪ декларейшн увей -- хоть уделайся
печалька, йоптель


остаётся что-то серьёзное (серьёзно агрегирующее или серьёзно перевычислительное) делать на не срьёзных языках, типа пл--перла
...
Рейтинг: 0 / 0
Промежуточные результаты в функциях.
    #39155093
kolts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ого спор разгорелся. Я просто хотел перенести часть логики в хранимые процедуры так как мне надо получить одну таблицу, а запросов несколько больших.
Пока отложил перенос на потом, запросы сложные и я их реализовал в цикле на с++, перенести придется поломать голову, хотелось сделать идеологически правильно(для общего развития)
...
Рейтинг: 0 / 0
Промежуточные результаты в функциях.
    #39155138
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koltsа запросов несколько больших.
варианты:
- 5 вьюх вместо пяти больших запросов
- сразу в триггерах делать промежуточные итоги (денормализация)
- OLAP\OLTP
....это в общем виде.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Промежуточные результаты в функциях.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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