|
|
|
новичок
      
участник
Last Login: 15.07.2002 12:31
Сообщ.: 9,
Visits: 100
|
|
| Перевожу проект MSSQL в Oracle. В mssql много используют временные таблицы в процедурах и блоках как локальные переменные. Есть аналоги этого в oracle
|
|
|
|
|
Forum Member
      
участник
Last Login: 16.09.2005 15:23
Сообщ.: 46,
Visits: 507
|
|
Думаю, самым простым аналогом могут быть PL/SQL таблицы
[code] DECLARE
TYPE t_pl_table IS TABLE OF a_table%rowtype INDEX BY BINARY_INTEGER; pl_table t_pl_table; i BINARY_INTEGER;
BEGIN
i := 0;
FOR Rec IN (SELECT * FROM a_table) LOOP
pl_table(i) := Rec; i := i + 1; END LOOP;
END;
Доступ к полям pl_table(i).field.
Индексом может быть любое целое число (не обязательно по порядку).
Дополнительно у PL-таблиц есть разные методы Exists, First, Last, Prior, Next, Delete...
Более сложными аналогами могут быть VARRAYS и NESTED TABLES.
|
|
|
|
|
новичок
      
участник
Last Login: 29.05.2002 12:57
Сообщ.: 6,
Visits: 67
|
|
Вычитал в одном из форумов. Может поможет. К сожалению не сохранил ни автора ни место расположения откуда взял. Но в доке действительно описано. Удачи.
"Существеут 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). Но это и не нужно."
|
|
|
|