|
|
|
Промежуточные результаты в функциях.
|
|||
|---|---|---|---|
|
#18+
Если у меня в функциях создаются промежуточные таблицы с которыми я дальше в этой же функции буду работать, как их сохранять? Кроме создания временных таблиц и перевода таблицы в массив и наоборот не нашел ничего.Какой способ более предпочтительный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2016, 16:34 |
|
||
|
Промежуточные результаты в функциях.
|
|||
|---|---|---|---|
|
#18+
koltsЕсли у меня в функциях создаются промежуточные таблицы с которыми я дальше в этой же функции буду работать, как их сохранять? Кроме создания временных таблиц и перевода таблицы в массив и наоборот не нашел ничего.Какой способ более предпочтительный? Лучше вообще так не делать... А так почитайте как работать с "WITH"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2016, 08:30 |
|
||
|
Промежуточные результаты в функциях.
|
|||
|---|---|---|---|
|
#18+
Лучше без промежуточных результатов? Почему? С оператором with тоже знаком, забыл упомянуть. Использовать лучше его? В принципе можно любой из трех способов использовать, но можно ли передать таблицу в качестве параметра(не в виде массива) и задать переменную типа "таблица". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2016, 10:09 |
|
||
|
Промежуточные результаты в функциях.
|
|||
|---|---|---|---|
|
#18+
koltsЛучше без промежуточных результатов? Почему? С оператором with тоже знаком, забыл упомянуть. Использовать лучше его? В принципе можно любой из трех способов использовать, но можно ли передать таблицу в качестве параметра(не в виде массива) и задать переменную типа "таблица". Насколько мне известно этого сделать нельзя. Но можно сделать "обратное" ч/з view или функции возвращающие RecordSet. Т.е. не получать "таблицу" параметром, а использовать функцию (например) возвращающую нужную таблицу. Можно еще "поиграть" с курсорами и временными таблицами... Но IMHO нужно отучаться от императивного подхода при работе с БД. Т.к. в PostgreSQL это особенно трудно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2016, 11:22 |
|
||
|
Промежуточные результаты в функциях.
|
|||
|---|---|---|---|
|
#18+
koltsЛучше без промежуточных результатов? Почему? странный вопрос. Почему быстрее считать в уме, чем записывать промежуточно на бумажку? Базовое понятие в БД - кортеж http://citforum.ru/database/osbd/glava_16.shtml По другому это на аппСервере с ООП и в другом ЯП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2016, 11:40 |
|
||
|
Промежуточные результаты в функциях.
|
|||
|---|---|---|---|
|
#18+
Petro123koltsЛучше без промежуточных результатов? Почему? странный вопрос. Почему быстрее считать в уме, чем записывать промежуточно на бумажку? Базовое понятие в БД - кортеж http://citforum.ru/database/osbd/glava_16.shtml По другому это на аппСервере с ООП и в другом ЯП вообще--то будь в пг реализована табличная переменная с передачей по ссылке -- это тоже было бы "вычисление в уме" без записи--писи. но её нет. и это не просто печалька, это боль. передача массивов или жейсонов не вариант --- так как всякий раз передаётся копия (якобы внутре передача по ссылке, но т.к. "исходное" может лежать на диске -- быть полем записи таблицы -- заботимся, якобы, чтобы не переписать помимо апдейта)=> всякое [каждое] изменение такого "объекта" -- полное копирование с пришиванием рюшечки. даже если в цыкле. даже если объявили переменную сами, руками (вот тут вроде бы и можно вычислить, что она уж точно не "поле на диске") . Хотя внутре "c" оно возможно сделать экономнее -- см. string_agg array_agg и т.п. агрегаты. там где передача ссылки на агрегат через internal переменную. что--то можно в plperl и т.п. [pltcl/plpython/..] -- совсем не надо никаких левых аппСерверов -- в перле вполне себе и хеш--таблички и массивы имеются. и передача ссылок на них. только вот пёрл -- язык типа для любителей брейн--факкинга. ну и в "true c" , для умельцев не попадать в ногу, стреляя в неё в упор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2016, 13:40 |
|
||
|
Промежуточные результаты в функциях.
|
|||
|---|---|---|---|
|
#18+
qwwqвообще--то будь в пг реализована табличная переменная с передачей по ссылке -- это тоже было бы "вычисление в уме" без записи--писи. но её нет. и это не просто печалька, это боль. Это не печалька, а осознанное решение! SQL - декларативный ЯП. Хочешь императивщину иди в "песочницу". Этим PostgreSQL мне и нравится. Что SQL там SQL, а не FoxPro. ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2016, 13:54 |
|
||
|
Промежуточные результаты в функциях.
|
|||
|---|---|---|---|
|
#18+
mad_nazgulqwwqвообще--то будь в пг реализована табличная переменная с передачей по ссылке -- это тоже было бы "вычисление в уме" без записи--писи. но её нет. и это не просто печалька, это боль. Это не печалька, а осознанное решение! SQL - декларативный ЯП. Хочешь императивщину иди в "песочницу". Этим PostgreSQL мне и нравится. Что SQL там SQL, а не FoxPro. ;-)много же вас, , путающих декларативность с немощью. чем задание виртуальной таблицы - т.е. табличной переменной, мешает декларативности? [ну введите декларативное CREATE LOCAL IN MEMORY TABLE [USING BLOCK ENGINE], если такие упоротые. я не против.] (/*для блокировочника перезапись по месту -- не криминал*/). осознанно только геморойность реализации -- есть такой паттерн -- "зелёный виноград" . у дедушки крылова хорошо описан. замечательно освоен разрабами пж. примеров -- завались. не будем о грустном. им денех не плотют. да и не миллион индусов там. жалко их. к тому же и речь -- не об собственно SQL , а о пл ПгСкл -- вот это вот "пл" ничего не говорит декларанто--фапперам/шликкерам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2016, 14:09 |
|
||
|
Промежуточные результаты в функциях.
|
|||
|---|---|---|---|
|
#18+
qwwqвообще--то будь в пг реализована табличная переменная с передачей по ссылке -- это тоже было бы "вычисление в уме" без записи--писи. было озвучено "что лучше" без конкретной задачи. - лучше мыть руки перед едой - лучше sql чем курсор - в крайнем случае используем курсор - потом временная таблица в оперативке на коннект (есть?) - потом постоянная бумажка для записи (таблица постоянная) Есть это в PosgreSQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2016, 16:25 |
|
||
|
Промежуточные результаты в функциях.
|
|||
|---|---|---|---|
|
#18+
Petro123qwwqвообще--то будь в пг реализована табличная переменная с передачей по ссылке -- это тоже было бы "вычисление в уме" без записи--писи. было озвучено "что лучше" без конкретной задачи. - лучше мыть руки перед едой - лучше sql чем курсор - в крайнем случае используем курсор - потом временная таблица в оперативке на коннект (есть?) - потом постоянная бумажка для записи (таблица постоянная) Есть это в PosgreSQL? а говорили, что "дети у нас хорошие ..." а выглядите -- как руками сделанные когда и если вы научитесь изменять данные в курсоре -- велкам когда и если временная таблица не будет отражена в системных, и будет доступна на стендбае -- велкам когда и если записи в ней, когда она локальна, будут не версионны (конкурентов то всё одно нет) -- т.е. копироваться как целое, а "блокировочны" -- т.е. доступны на изменение точечно -- т.е. "по--ссылке" -- велкам пока же всё -- через одно место, после которого руки таки лучше мыть и блаародных донов, считающих что всё делать через это место -- труеЪ декларейшн увей -- хоть уделайся печалька, йоптель остаётся что-то серьёзное (серьёзно агрегирующее или серьёзно перевычислительное) делать на не срьёзных языках, типа пл--перла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2016, 17:16 |
|
||
|
Промежуточные результаты в функциях.
|
|||
|---|---|---|---|
|
#18+
Ого спор разгорелся. Я просто хотел перенести часть логики в хранимые процедуры так как мне надо получить одну таблицу, а запросов несколько больших. Пока отложил перенос на потом, запросы сложные и я их реализовал в цикле на с++, перенести придется поломать голову, хотелось сделать идеологически правильно(для общего развития) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2016, 21:54 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39154327&tid=1997495]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
117ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 638ms |

| 0 / 0 |
