Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
11.04.2002, 10:48
|
|||
---|---|---|---|
временная таблица |
|||
#18+
поскажите ... есть ли в Оракле 8 возможность создать временную таблицу состоящую например из двух полей ID1 number и ID2 number чтобы я после мог выполнить над этой таблицей операции селекта, например? и если "да", то как? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.04.2002, 12:25
|
|||
---|---|---|---|
временная таблица |
|||
#18+
Это уже классика, ну да ладно: Существеут 2 типа временных таблиц - одна хранит свои записи до завершения транзакции и называеться transaction-specific temporary table. Другая, до завершения сессии (session-specific t.t.). После завершения транзакции/сессии все записи из таблицы автоматически удаляються (ну для второй корректнее будет сказать "транкейтяться"(truncate)). Создаються таблицы так: -- 1 тип CREATE GLOBAL TEMPORARY TABLE TempTable ( D1 NUMBER(10), D2 NUMBER(10) ) ON COMMIT DELETE ROWS; --2 тип CREATE GLOBAL TEMPORARY TABLE TempTable ( D1 NUMBER(10), D2 NUMBER(10) ) ON COMMIT PRESERVE ROWS; Об их ограничениях можно почитать в документации, одним из существенных ограничений являеться невозможность создать ссылочную целостность (foreign key). Но это и не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.04.2002, 13:13
|
|||
---|---|---|---|
временная таблица |
|||
#18+
может быть и классика, но не для тех кто недавно для Оракла пишет тогда поскажите еще, как эти таблицы создавать внутри процедуры ... при попытке написать GLOBAL TEMPORARY TABLE TempTable ... внутри блока begin end; получаю ошибку PLS-00103 что я делаю не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.04.2002, 13:52
|
|||
---|---|---|---|
|
|||
временная таблица |
|||
#18+
ну это уж слишком. Может все-таки почитать чего нибудь, а? во время компиляции процедуры все объекты должны уже существовать! что бы этого избежать необходимо использовать execute immediate или пакет DBMS_SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.04.2002, 14:26
|
|||
---|---|---|---|
временная таблица |
|||
#18+
а какие привилегии надо дать пользователю чтобы он мог выполнить EXECUTE IMMEDIATE (изнутри процедуры)? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.04.2002, 10:54
|
|||
---|---|---|---|
|
|||
временная таблица |
|||
#18+
Menja eta tema toze za zivoe zadela. I vot k kakim vyvodam ja prishel. Esli u tebja Oracle 8 (a ne Oracle 8i ili vyshe), to skoree vsego mozno rasslabit'sja. V Oracle 8 eta kassika (po krainei mere u menja) ne idet. Na Oracle 8i vse zamechatel'no. I v doc-ah horoshee opisanie i rabotaet kak nado. Mozet eshe kto chego mozet po etomu povodu dobavit'? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.04.2002, 08:47
|
|||
---|---|---|---|
|
|||
временная таблица |
|||
#18+
Помоему в доке написано, что процедура выполняется от имени создателя, а не от имени пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.04.2002, 08:48
|
|||
---|---|---|---|
|
|||
временная таблица |
|||
#18+
Помоему в доке написано, что процедура выполняется от имени создателя, а не от имени пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2002, 19:46
|
|||
---|---|---|---|
временная таблица |
|||
#18+
DBMS_SQL, по-моему, уже с 7.3 выполняется от имени того юзверя, кто в тот момент в правах. По крайней мере, уж точно не от SYS, чей это пакет. Начиная с 8.0 (?, или только с 8.1, не проверял -- мимо меня 8.0 как-то проскочил), можно указывать от чьего эффективного имени будет выполняться пакет или процедура: от имени владельца или от имени того, кто её вызвал. А то раньше это всё напоминало юникс, где на всех файлах стоит SUID атрибут . А зачем вообще извращяться с созданием временной таблицы на ходу??? Создал один раз при разработке схемы и вперёд. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2002, 07:55
|
|||
---|---|---|---|
временная таблица |
|||
#18+
временная таблица на то и временная что нужна только на определенное врмя для промжуточных вычислений ... она не принадлежит схеме. И потом, зона видимости в пределах коннекта ... По крайней мере в MSSQL это один из мощнейших и удобных инструментов. А поскольку я пришел с MSSQL то я и стал искать что-либо аналогичное ... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.04.2002, 16:42
|
|||
---|---|---|---|
временная таблица |
|||
#18+
Ну так используй PL/SQL таблицы. type TTable is table of [element_type]; При этом element_type может быть определенной пользователем структурой. Если же тебе надо активно селекать из PL/SQL таблицы и возвращать результат как курсор, то сделай ее как глобальный тип (create type ...) и вперед. По поводу временных таблиц базы данных, думаю не стоят они того. Дело в том, что хранимые процедуры (функции) могут исполняться в нескольких режимах (зависит от описания): от имени создателя (режим по умолчанию), от имени текущего пользователя или еще как-то. И назначил ты исполнение от имени текущего юзера, а вдруг он не имеет прав на создание таблиц - все, попал. Потом временные таблицы создаются как и постоянные, только в temporary tablespace), а вдруг у тебя админ забыл дать юзеру temp tablespace действительно временный, и попал ты на создание временной таблицы в постоянном tablspace. А может админ не настроил extents во временном табличном пространстве или там лимит у пользователей мал - и все опять попал. А с таблицами PL/SQL, если их нагружать не сильно много (ну там несколько сотен килобайт), то все будет пучком... Ну и последнее - не работал я с ними, ничего путного про временные таблицы сказать не могу )) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.05.2002, 05:43
|
|||
---|---|---|---|
|
|||
временная таблица |
|||
#18+
А вообще лучше не использовать эти временные таблицы. Почему-то каждый кто когда-то работал с MSSQL счает необходимым и в Oracle использовать временные таблицы. Я за все свое время работы только однажды использовал временные таблищы, да и то это было давно. А сейчас я бы и тот алгоритм сделал бы без использования таблицы. В Oracle очень богатый SQL и PS/SQL. Я понимаю, что самый короткий путь - это тот который знаешь, но все-таки лучше сначало разобраться с алгоритмом и побольше узнать о возможностях Oracle. Опиши задание и мы поможем. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.05.2002, 08:04
|
|||
---|---|---|---|
временная таблица |
|||
#18+
Собственно, когда создавался топик задача была другая и я ее потом решил другими способами, но после мне опять пришлось как то выкручиваться уже в другой ситуации ... А проблема такая ... есть весьма большие таблицы содержацие статистику. Мне надо было отобрать по некоторому критерию записи оттуда и потом сджойнить их с выборкой из других таблиц. Так вот по отдельности каждый подзапрос работал замечательно и быстро, но как только я пытался сджойнить получившиеся резалтсеты, то на это уходило порядка получаса (при том что обе выборки были весьма скромные ... не более 3-4 тысяч записей в каждой). Когда я выгрузил каждую во временную таблицу и проиндексировал их и после чего сджойнил, то работать стало все мгновенно. Вот отсюда вопрос: как можно без потери производительности сделать тоже самое и без использования временных таблиц. to nick: Я вполне допускаю что в Оракле существуют мощные инструменты, просто когда сидишь 6 лет под одним сервером, а потом тебе надо срочно начинать писать под другой, то пытаешься использовать старый багаж знаний ... хотя бы на первое время. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.11.2002, 07:32
|
|||
---|---|---|---|
|
|||
временная таблица |
|||
#18+
V Oracle, v otli4ie ot SQL-Servera, vremennaja tablica sama po sebe ne vremenna (belyj negr!) i sozdaetsja odin raz, a vremennye v nej dannye, tak 4to ispol'zovat' ee mo}|{no kak v SQL-Servere, tol'ko sozdavat' ne vnutri procedury, a odin raz v na4ale, kak i postojannye tablicy, t.e. SQL-Serverskie navyki o4en' da}|{e prigodjatsja v Oracle. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.11.2002, 17:58
|
|||
---|---|---|---|
временная таблица |
|||
#18+
>>А проблема такая ... есть весьма большие таблицы >>содержацие статистику. Мне надо было отобрать по >>некоторому критерию записи оттуда и потом сджойнить >>их с выборкой из других таблиц. Так вот по отдельности >>каждый подзапрос работал замечательно и быстро, но >>как только я пытался сджойнить получившиеся >>резалтсеты, то на это уходило порядка получаса (при >>том что обе выборки были весьма скромные ... не более >>3-4 тысяч записей в каждой). Сделай нормальные индексы, собери статистику, напиши нормальный запрос (используя PLAN и.т.д) В 9i есть SQL Analyze который тебе поможет И главное Oracle умеет обрабатывать сложные запросы (в отличие от некоторых других СУБД) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=52&mobile=1&tid=1992617]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 173ms |
0 / 0 |