|
Временные таблицы в процедурах
|
|||
---|---|---|---|
#18+
граждане, подскажите умную мысль, у кого она есть :)) Проблем. Из процедуры вызывается другая процедура и причём два раза с разными параметрами. И в этой процедуре создаётся временная таблица. Первый раз OK. При втором вызове ессно получаю болт о том, что такая таблица уже есть. Как это обойти, кроме как созданием двух одинаковых процедур, отличающихся только именем таблицы? Про обойтись вообще без временных таблиц совет не принимается. :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 11:37 |
|
Временные таблицы в процедурах
|
|||
---|---|---|---|
#18+
sergnn, удалять временную таблицу явным запросом когда уже не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 11:47 |
|
Временные таблицы в процедурах
|
|||
---|---|---|---|
#18+
Melkij, Проблем в том, что эта процедура возвращает таблицу. Которая суть запрос из этой самой временной таблицы. Когда удалять? После return query select? Это как вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 11:57 |
|
Временные таблицы в процедурах
|
|||
---|---|---|---|
#18+
sergnnMelkij, Проблем в том, что эта процедура возвращает таблицу. Которая суть запрос из этой самой временной таблицы. Когда удалять? После return query select? Это как вообще? Проверить-то можно существует ли уже таблица и не создавать, чтобы не нарываться на ошибку, но это значит, что таблица уже была создана где-то кем-то и там могут быть данные и пр. Можно каждый раз создавать таблицу с временным именем. Но у вас будет смесь непоняток при такой логике, как у вас описана. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 12:03 |
|
Временные таблицы в процедурах
|
|||
---|---|---|---|
#18+
sergnn, добавить в таблицу поле-признак. если таблица есть, повторно не создавать ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 12:03 |
|
Временные таблицы в процедурах
|
|||
---|---|---|---|
#18+
А может есть возможность возвращать не таблицу, а курсор. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 12:12 |
|
Временные таблицы в процедурах
|
|||
---|---|---|---|
#18+
sergnnMelkij, Проблем в том, что эта процедура возвращает таблицу. Которая суть запрос из этой самой временной таблицы. Когда удалять? После return query select? Это как вообще? - обязать это делать вызывающий код. В частности перед повторным вызовом этой хранимки - удалять в самой хранимке перед create temp table - после return query в частности, почему бы нет? return query не прерывает выполнение функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 12:15 |
|
Временные таблицы в процедурах
|
|||
---|---|---|---|
#18+
MelkijsergnnMelkij, Проблем в том, что эта процедура возвращает таблицу. Которая суть запрос из этой самой временной таблицы. Когда удалять? После return query select? Это как вообще? - обязать это делать вызывающий код. В частности перед повторным вызовом этой хранимки - удалять в самой хранимке перед create temp table - после return query в частности, почему бы нет? return query не прерывает выполнение функции. То есть return в данном контексте не означает завершение процедуры? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 12:45 |
|
Временные таблицы в процедурах
|
|||
---|---|---|---|
#18+
sergnnграждане, подскажите умную мысль, у кого она есть :)) Проблем. Из процедуры вызывается другая процедура и причём два раза с разными параметрами. И в этой процедуре создаётся временная таблица. Первый раз OK. При втором вызове ессно получаю болт о том, что такая таблица уже есть. Как это обойти, кроме как созданием двух одинаковых процедур, отличающихся только именем таблицы? Про обойтись вообще без временных таблиц совет не принимается. :)) имя временной таблицы привяжите к pid ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 12:52 |
|
Временные таблицы в процедурах
|
|||
---|---|---|---|
#18+
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). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 13:03 |
|
Временные таблицы в процедурах
|
|||
---|---|---|---|
#18+
sergnnПро обойтись вообще без временных таблиц совет не принимается. :)) таки обойтись возвратом массива (пользовательского типа). при вызове аннестить массив в сетоф == таблицу. если конечно вы не хотите унутре индексировать темповухи для мегавычислений. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 13:08 |
|
|
start [/forum/topic.php?desktop=1&fid=53&tid=1995034]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 271ms |
total: | 413ms |
0 / 0 |