|
|
|
Приведение record к композитному типу
|
|||
|---|---|---|---|
|
#18+
Привет! Столкнулся с необходимостью приведения результата функции, возвращающей set of records к композитному типу (определенному таблицей). Есть ли какой нибудь изящный метод сделать это. Ниже простой пример того, что хочу сделать.(Версия 9.2) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Пробовал вот таким способом, не может преобразовать Код: sql 1. 2. В раздел from вызов засунуть не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 16:03 |
|
||
|
Приведение record к композитному типу
|
|||
|---|---|---|---|
|
#18+
pavel.panshin<> В раздел from вызов засунуть не могу. ? а почему, собсно Код: sql 1. но лучше таки через честный lateral (я так правильно понимаю, что вам многострочный возврат требуется, но не lateral способ его получить чреват изысками из области теории чисел. как-то так, например: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 16:26 |
|
||
|
Приведение record к композитному типу
|
|||
|---|---|---|---|
|
#18+
pavel.panshin, Пробуйте объявить функцию так: Код: sql 1. Кстати, как-то очень странно: Объявляете функцию как возвращающую набор строк, а обращаетесь как если бы она возвращала одну строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 16:28 |
|
||
|
Приведение record к композитному типу
|
|||
|---|---|---|---|
|
#18+
ursido<> Кстати, как-то очень странно: Объявляете функцию как возвращающую набор строк, а обращаетесь как если бы она возвращала одну строку. это [было] целое искюсство, получить многострочный lateral в версиях до 9.3, с минимальным числом преобразований(или обёрток) ничего странного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 16:32 |
|
||
|
Приведение record к композитному типу
|
|||
|---|---|---|---|
|
#18+
qwwq, спасибо, помогло, а есть объяснение, чем преобразование к тексту помогает в данном случае. вариант с lateral в 9.2 не прокатит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 16:34 |
|
||
|
Приведение record к композитному типу
|
|||
|---|---|---|---|
|
#18+
каст из типа-в-тип должен быть описан. из псевдотипа record в тип temp1 он постгресу неизвестен. каст record в текст/из текста в табличный тип -- "описан" для постгреса всегда. (но может быть зависим от настроек -- если у вас даты, времена и т.п. поля, чьё отображение в текст зависит от настроек сеанса) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 16:54 |
|
||
|
Приведение record к композитному типу
|
|||
|---|---|---|---|
|
#18+
qwwq, спасибо еще раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 17:02 |
|
||
|
Приведение record к композитному типу
|
|||
|---|---|---|---|
|
#18+
pavel.panshin<>вариант с lateral в 9.2 не прокатит. если речь о том, как развернуть по полям lateral в 9.2 -- то я извращался как-то так (закроем глаза что корелят в параметрах по true) Код: sql 1. 2. -- описано ли это в доке (<9.3) -- не знаю. знаю, что при нескольких set-returning ф-ях в листе вывода всё несколько неожиданно, а весь этот нежданчик описан, сюрприз, -- где то в частной переписке гурьев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 17:16 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38930804&tid=1998058]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
158ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 456ms |

| 0 / 0 |
