powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временные таблицы в процедурах
12 сообщений из 12, страница 1 из 1
Временные таблицы в процедурах
    #39862702
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
граждане, подскажите умную мысль, у кого она есть :))

Проблем. Из процедуры вызывается другая процедура и причём два раза с разными параметрами.
И в этой процедуре создаётся временная таблица.
Первый раз OK.
При втором вызове ессно получаю болт о том, что такая таблица уже есть.
Как это обойти, кроме как созданием двух одинаковых процедур, отличающихся только именем таблицы?
Про обойтись вообще без временных таблиц совет не принимается. :))
...
Рейтинг: 0 / 0
Временные таблицы в процедурах
    #39862713
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnn,

удалять временную таблицу явным запросом когда уже не нужна.
...
Рейтинг: 0 / 0
Временные таблицы в процедурах
    #39862721
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,
Проблем в том, что эта процедура возвращает таблицу. Которая суть запрос из этой самой временной таблицы. Когда удалять? После return query select? Это как вообще?
...
Рейтинг: 0 / 0
Временные таблицы в процедурах
    #39862735
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnnMelkij,
Проблем в том, что эта процедура возвращает таблицу. Которая суть запрос из этой самой временной таблицы. Когда удалять? После return query select? Это как вообще?

Проверить-то можно существует ли уже таблица и не создавать, чтобы не нарываться на ошибку, но это значит, что таблица уже была создана где-то кем-то и там могут быть данные и пр.
Можно каждый раз создавать таблицу с временным именем. Но у вас будет смесь непоняток при такой логике, как у вас описана.
...
Рейтинг: 0 / 0
Временные таблицы в процедурах
    #39862736
withrecursive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergnn,
добавить в таблицу поле-признак. если таблица есть, повторно не создавать
...
Рейтинг: 0 / 0
Временные таблицы в процедурах
    #39862741
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А может есть возможность возвращать не таблицу, а курсор.
...
Рейтинг: 0 / 0
Временные таблицы в процедурах
    #39862745
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnnMelkij,
Проблем в том, что эта процедура возвращает таблицу. Которая суть запрос из этой самой временной таблицы. Когда удалять? После return query select? Это как вообще?
- обязать это делать вызывающий код. В частности перед повторным вызовом этой хранимки
- удалять в самой хранимке перед create temp table
- после return query в частности, почему бы нет? return query не прерывает выполнение функции.
...
Рейтинг: 0 / 0
Временные таблицы в процедурах
    #39862781
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MelkijsergnnMelkij,
Проблем в том, что эта процедура возвращает таблицу. Которая суть запрос из этой самой временной таблицы. Когда удалять? После return query select? Это как вообще?
- обязать это делать вызывающий код. В частности перед повторным вызовом этой хранимки
- удалять в самой хранимке перед create temp table
- после return query в частности, почему бы нет? return query не прерывает выполнение функции.

То есть return в данном контексте не означает завершение процедуры?
...
Рейтинг: 0 / 0
Временные таблицы в процедурах
    #39862792
lr2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lr2
Гость
sergnnграждане, подскажите умную мысль, у кого она есть :))

Проблем. Из процедуры вызывается другая процедура и причём два раза с разными параметрами.
И в этой процедуре создаётся временная таблица.
Первый раз OK.
При втором вызове ессно получаю болт о том, что такая таблица уже есть.
Как это обойти, кроме как созданием двух одинаковых процедур, отличающихся только именем таблицы?
Про обойтись вообще без временных таблиц совет не принимается. :))

имя временной таблицы привяжите к pid
...
Рейтинг: 0 / 0
Временные таблицы в процедурах
    #39862803
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lr2имя временной таблицы привяжите к pid
А чем это, любопытно, поможет? Времянка всегда привязана к pid

sergnnТо есть return в данном контексте не означает завершение процедуры?
return означает.
return next, return query или return query execute может быть много .
RETURN NEXT and RETURN QUERY do not actually return from the function — they simply append zero or more rows to the function's result set. Execution then continues with the next statement in the PL/pgSQL function. As successive RETURN NEXT or RETURN QUERY commands are executed, the result set is built up. A final RETURN, which should have no argument, causes control to exit the function (or you can just let control reach the end of the function).
...
Рейтинг: 0 / 0
Временные таблицы в процедурах
    #39862809
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnnПро обойтись вообще без временных таблиц совет не принимается. :))
таки обойтись возвратом массива (пользовательского типа). при вызове аннестить массив в сетоф == таблицу.

если конечно вы не хотите унутре индексировать темповухи для мегавычислений.
...
Рейтинг: 0 / 0
Временные таблицы в процедурах
    #39862833
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkijreturn означает.
return next, return query или return query execute https://www.postgresql.org/docs/current/plpgsql-control-structures.html]может быть много

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


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