powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временные таблицы и ERROR: relation with OID ##### does not exist
9 сообщений из 9, страница 1 из 1
Временные таблицы и ERROR: relation with OID ##### does not exist
    #34249662
burunduchechek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу процедуру на pgsql.
Первый раз запускаю - работает. Следующие разы ошибка

ERROR: relation with OID ##### does not exist

до тех пор пока не изменю хоть один байт в процедуре. Кэш блин.

Для временных таблиц в FAQ советуют использовать PREPARE и EXECUTE.
У меня ничего не получилось так, может потому что мне нужно сохранить в переменную значение из select-запроса. Вот запрос которому я пытался делать PREPARE и EXECUTE:

select title into s from aaa where intersects(tg, the_geom) limit 1;

здесь aaa - как раз та злостная временная таблица

Но даже без всяких временных таблиц, делаю drop и create table aaa as select the_geom, title from city_name where .... и получаю тот же эффект.

подскажите плиз
...
Рейтинг: 0 / 0
Временные таблицы и ERROR: relation with OID ##### does not exist
    #34249756
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А версия PG какая?
...
Рейтинг: 0 / 0
Временные таблицы и ERROR: relation with OID ##### does not exist
    #34249881
burunduchechek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
8.1
...
Рейтинг: 0 / 0
Временные таблицы и ERROR: relation with OID ##### does not exist
    #34249902
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PREPARE - запоминает oid всех участвующих в запросе таблиц. Когда убивается временная таблица, или ты пересоздаёшь обычную, у неё уже другой oid, и сохранённый запрос пытается найти "ту единственную, которой уже нет"

Кстати, тоже самое будет в процедурах на plpgsql. - если хочешь использовать временные таблицы, скорее всего придётся делать execute строки.
...
Рейтинг: 0 / 0
Временные таблицы и ERROR: relation with OID ##### does not exist
    #34250507
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так помоему
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare
  rec record;
  title text;
begin
...
  for rec in execute \'select title from aaa where intersects(tg, the_geom) limit 1;\'
  loop
    title := rec.title;
  end loop;
...
end;
...
Рейтинг: 0 / 0
Временные таблицы и ERROR: relation with OID ##### does not exist
    #34251152
burunduchechek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, ваш ответ очень помог

получилось даже так
execute 'select title from aaa where intersects(tg, the_geom) limit 1;' into v_rec;

оказывается PREPARE вообще нет смысла в хранимых процедрурах использовать PL/PgSQL:
http://www.thescripts.com/forum/thread420701.html

ZemAкак-то так помоему
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Временные таблицы и ERROR: relation with OID ##### does not exist
    #35708554
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в какой-нибудь версии это исправленно??
уж очень не удобно так работать
...
Рейтинг: 0 / 0
Временные таблицы и ERROR: relation with OID ##### does not exist
    #35708724
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gold_в какой-нибудь версии это исправленно??
уж очень не удобно так работатьда, в 8.3
http://www.postgresql.org/docs/8.3/static/release-8-3.html

авторAutomatically re-plan cached queries when table definitions change or statistics are updated (Tom)
Previously PL/PgSQL functions that referenced temporary tables would fail if the temporary table was dropped and recreated between function invocations, unless EXECUTE was used. This improvement fixes that problem and many related issues.
...
Рейтинг: 0 / 0
Временные таблицы и ERROR: relation with OID ##### does not exist
    #35708954
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура... надо переходить!!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временные таблицы и ERROR: relation with OID ##### does not exist
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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