Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.12.26;
Скачать: [xml.tar.bz2];

Вниз

ORACLE & временная таблица?   Найти похожие ветки 

 
chak   (2002-12-05 10:29) [0]

Как лучше и проще удалить временную таблицу в ORACLE по прошествии допустим 10 минут?
Можна ли сделать это используя только средства самого ORACLE?


 
Johnny Smith   (2002-12-05 10:35) [1]

Повесьте JOB


 
chak   (2002-12-05 10:41) [2]

==> Johnny Smith © (05.12.02 10:35)
можна это сделать из Delphi?


 
Sergey13   (2002-12-05 10:41) [3]

2chak © (05.12.02 10:29)
А что ты понимаешь под "временной таблицой" и зачем ее удалять?


 
Johnny Smith   (2002-12-05 10:50) [4]

2chak © (05.12.02 10:41)
То есть все-таки средствами Оракла или из Дельфей?


 
chak   (2002-12-05 11:01) [5]

==> Sergey13 © (05.12.02 10:41)
временную таблицу хочу сделать для того, чтобы сохранить в ней результати нескольких селектов, и дать возможность юзеру потом их использовать(сортировать например), ато второй раз делать опять тотже запрос и отсортировать его еще при этом ....
если за 10 минут(ну условно) ему надоест - убить таблицу(зачем она потом кому нужна будет)

==> Johnny Smith © (05.12.02 10:50)
Создать JOB средствами DELPHI,
что-то я совсем запутался - потом ж и его придется уничтожать!!!


что мне делать?


 
ЮЮ   (2002-12-05 11:09) [6]

В MS SQL временная таблица уничтожается сервером при отключении, неужели в хвалёном Оракле это не так?


 
Johnny Smith   (2002-12-05 11:10) [7]

2chak © (05.12.02 11:01)
Средствами Оракла создаете JOB, который будет квасить каждые 10 минут вашу временную таблицу.
Что еще не понятно? :)))))
И еще - о какой временной таблице Вы говорите?
О переменной типа Table? Или просто о табличке, которую Вы будете считать временной?


 
Sergey13   (2002-12-05 11:17) [8]

2chak © (05.12.02 11:01)
В Оракле (начиная с 8i кажется) существует понятие временная таблица. Она может хранить временные(свои для каждой сессии) данные или пока действует транзакция ИЛИ пока есть сессия. Синтаксиса для создания под рукой нет к сожалению. Т.е. получается что таблица ПОСТОЯННАЯ (создается один раз для ВСЕХ), но для хранения ВРЕМЕННЫХ данных. Покопай в этом направлении - это то что тебе надо. А создавать простую таблицу и убивать ее постоянно - не есть гуд.


 
chak   (2002-12-05 12:11) [9]

==> Johnny Smith © (05.12.02 11:10)
Да - просто таблица - и я ее считаю "временной".

==> Sergey13 © (05.12.02 11:17)
Дело в том, что в сессии она должна создается, данные из нее передаются пользователю, и сессия закрывается. Пользователь не остается на связи с базой постоянно.


 
ЮЮ   (2002-12-05 12:51) [10]

Ну тогда вообще не убивай таблицу, предоставь юзеру возможность сотрировать её несколько дней, если не можешь написать нормальный запрос на нормальном сервере :-)


 
Johnny Smith   (2002-12-05 12:53) [11]

2chak © (05.12.02 12:11)
==> Johnny Smith © (05.12.02 11:10)
Да - просто таблица - и я ее считаю "временной".

Это слишком дорогостоящий в плане ресурсов вариант...
Я бы посоветовал от него отказаться.


 
dimis   (2002-12-05 14:28) [12]

можно повесить на начло и конец сессии тригерры (Oracle это позволяет)
и еще поищи в хелпе об AUTONOMOUS_TRANSACTION Pragma
поможет


 
Sergey13   (2002-12-06 09:50) [13]

2chak © (05.12.02 12:11)
>Дело в том, что в сессии она должна создается, данные из нее передаются пользователю, и сессия закрывается. Пользователь не остается на связи с базой постоянно.

А почему она должна создаваться именно в сессии? Она не имеет постоянной структуры? Структура произвольная? Или набор таблиц с определенной структурой? Смысл временной таблицы в Оракле - ты ОДИН раз определяешь структуру для хранения временных данных и при этом не создаешь обычную таблицу. Данные в этой структуре хранятся пока действует транзакция или сеанс. Потом АВТОМАТОМ удаляются. Данные РАЗНЫХ пользователей обрабатываются НЕЗАВИСИМО в ОДНОЙ таблице. Чего тебе еще надо? ИМХО достаточно.
А вешать на тригеры/ХП DDL операторы - вещь не очень хорошая, ИМХО.

Вот нашел описание синтаксиса создания
-------------
Создание временных таблиц
Вы создаете временную таблицу, используя для этого специальные ключевые слова ANSI. Чтобы указать, что данные определены на время сеанса, вы должны использовать ключевые слова ON COMMIT PRESERVE ROWS. Чтобы указать, что данные определены на время транзакции, вы должны использовать ключевые слова ON COMMIT DELETE ROWS.
CREATE GLOBAL TEMPORARY TABLE ...
[ON COMMIT PRESERVE ROWS ]
CREATE GLOBAL TEMPORARY TABLE ...
[ON COMMIT DELETE ROWS ]
-------------------



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
14-86176
biss
2002-12-06 13:50
2002.12.26
Как стать мастером


14-86142
Blondin
2002-12-05 18:45
2002.12.26
Мастера, нужна критика сайта, не откажите


1-85995
Kac
2002-12-16 10:44
2002.12.26
Проверка пароля


1-86026
ppcat
2002-12-15 11:50
2002.12.26
StringGrid, удалить строку.


1-85914
Рафик
2002-12-11 12:13
2002.12.26
Проблем с отчетом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский