Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
цикл по столбцам или метаданные курсора (+)
|
|||
|---|---|---|---|
|
#18+
Задача - сформировать из хранимой процедуры таблицу в html заданного формата. Записать в поле типа text. Данные получаю в виде refcursor'а В лоб решается организацией цикла по строкам и столбцам record'а. Где то видел пример на plperl, но потерял. Второй вариант, можно получить перечислимый список названий столбцов из курсора. Есть ли средства в plpgsql получить метаданные из курсора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 20:20 |
|
||
|
цикл по столбцам или метаданные курсора (+)
|
|||
|---|---|---|---|
|
#18+
Третий вариант - темповая таблица. Сделать её имея курсор не получится, но если есть возможность отказаться от курсора и делать CREATE AS SELECT тогда можно попробовать. Правда были какие-то траблемы с temp таблицами, созданными из динамического SQL в plpgsql. Поищите по форуму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 12:44 |
|
||
|
цикл по столбцам или метаданные курсора (+)
|
|||
|---|---|---|---|
|
#18+
ThamerlanТретий вариант - темповая таблица. Сделать её имея курсор не получится, но если есть возможность отказаться от курсора и делать CREATE AS SELECT тогда можно попробовать. а как по временой таблице сделать цикл по столбцам? Thamerlan Правда были какие-то траблемы с temp таблицами, созданными из динамического SQL в plpgsql. Поищите по форуму. Этот вопрос я уже решил. Используем execute и нет проблем. /topic/476393&hl= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 12:54 |
|
||
|
цикл по столбцам или метаданные курсора (+)
|
|||
|---|---|---|---|
|
#18+
tadmin а как по временой таблице сделать цикл по столбцам? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Получаете имена всех столбцов (можно и тип данных получить). Ну и дальше можно попытаться прямо через INSERT AS SELECT вставить в TEXT поле имена столбцов и данные, сконкатенировав ( тьфу ты язык чуть не сломал ) их с Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 13:08 |
|
||
|
цикл по столбцам или метаданные курсора (+)
|
|||
|---|---|---|---|
|
#18+
Спасибо, Thamerlan, так и попробую. я не догадался бы. Если кто то знает решение с получением метаданных (имена столбцов курсора), не скрывайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 14:37 |
|
||
|
цикл по столбцам или метаданные курсора (+)
|
|||
|---|---|---|---|
|
#18+
tadminСпасибо, Thamerlan, так и попробую. я не догадался бы. Если кто то знает решение с получением метаданных (имена столбцов курсора), не скрывайте.Не знаю, но к примеру перед открытием проделать CREATE AS SELECT xxxxxxx LIMIT 1 - далее по тексту. Хотя, думается, метод не может не быть. Вот только не обязательно плпгскл-ный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 15:34 |
|
||
|
цикл по столбцам или метаданные курсора (+)
|
|||
|---|---|---|---|
|
#18+
Метод, предложенный Thamerlan, оказался очень удобен. кеширование OID временных таблиц преодолел стандартно Код: plaintext в pg_class столько временных таблиц с одинаковым именем, сколько сессий. вот, например, две сессии и две временные таблицы. Код: plaintext ____oid; relname; relnamespace; reltype; relfilenode; relfrozenxid907277; "access_level"; 907276; 907278; 907277; 630664907413; "access_level"; 907332; 907414; 907413; 632660 Не могу понять, как отличить таблицу "своей" сессии от "чужой". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 19:45 |
|
||
|
цикл по столбцам или метаданные курсора (+)
|
|||
|---|---|---|---|
|
#18+
Вы же создаете временную таблицу, которую используете в пределах одной хранимой процедуры. Генерите ей новое имя каждый раз. Например, 32-х символьное имя для таблицы врятли повторится на таком коротком временном интервале (длина транзакции). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 20:07 |
|
||
|
цикл по столбцам или метаданные курсора (+)
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 21:19 |
|
||
|
цикл по столбцам или метаданные курсора (+)
|
|||
|---|---|---|---|
|
#18+
смежная проблема: как можно сделать цикл по курсору. Не по столбцам, а просто по строкам? Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2007, 12:36 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=282&tid=2004837]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 353ms |

| 0 / 0 |
