﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Oracle / Базы данных  / Аналог в Oracle временных таблиц MsSql / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Thu, 08 Jan 2009 15:31:48 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Аналог в Oracle временных таблиц MsSql</title><link>http://www.relib.com/forums/Topic751040-21-1.aspx</link><description>Вычитал в одном из форумов. Может поможет.&lt;BR&gt;К сожалению не сохранил ни автора ни место расположения&lt;BR&gt;откуда взял. Но в доке действительно описано.&lt;BR&gt;Удачи.&lt;BR&gt;&lt;BR&gt;&amp;quot;Существеут 2 типа временных таблиц - одна хранит свои записи до завершения транзакции и называеться transaction-specific temporary table. Другая, до завершения сессии (session-specific t.t.). После завершения транзакции/сессии все записи из таблицы автоматически удаляються (ну для второй корректнее будет сказать &amp;quot;транкейтяться&amp;quot;(truncate)). Создаються таблицы так:&lt;BR&gt;-- 1 тип&lt;BR&gt;CREATE GLOBAL TEMPORARY TABLE TempTable&lt;BR&gt;(&lt;BR&gt;D1 NUMBER(10),&lt;BR&gt;D2 NUMBER(10)&lt;BR&gt;)&lt;BR&gt;ON COMMIT DELETE ROWS;&lt;BR&gt;&lt;BR&gt;--2 тип&lt;BR&gt;CREATE GLOBAL TEMPORARY TABLE TempTable&lt;BR&gt;(&lt;BR&gt;D1 NUMBER(10),&lt;BR&gt;D2 NUMBER(10)&lt;BR&gt;)&lt;BR&gt;ON COMMIT PRESERVE ROWS;&lt;BR&gt;&lt;BR&gt;Об их ограничениях можно почитать в документации, одним из существенных ограничений являеться невозможность создать ссылочную целостность (foreign key). Но это и не нужно.&amp;quot;</description><pubDate>Wed, 29 May 2002 12:59:00 GMT</pubDate><dc:creator>Alladin</dc:creator></item><item><title>RE: Аналог в Oracle временных таблиц MsSql</title><link>http://www.relib.com/forums/Topic751040-21-1.aspx</link><description>Думаю, самым простым аналогом могут быть PL/SQL таблицы&lt;BR&gt;&lt;BR&gt;[code]&lt;BR&gt;DECLARE&lt;BR&gt;&lt;BR&gt;  TYPE t_pl_table IS TABLE OF a_table%rowtype INDEX BY BINARY_INTEGER;&lt;BR&gt;  pl_table t_pl_table;&lt;BR&gt;  i        BINARY_INTEGER;&lt;BR&gt;&lt;BR&gt;BEGIN&lt;BR&gt;&lt;BR&gt;  i := 0;&lt;BR&gt;&lt;BR&gt;  FOR Rec IN (SELECT * FROM a_table)&lt;BR&gt;  LOOP&lt;BR&gt;&lt;BR&gt;    pl_table(i) := Rec;&lt;BR&gt;    i := i + 1;&lt;BR&gt;    &lt;BR&gt;  END LOOP;&lt;BR&gt;&lt;BR&gt;END;&lt;BR&gt;&lt;BR&gt;Доступ к полям pl_table(i).field.&lt;BR&gt;&lt;BR&gt;Индексом может быть любое целое число (не обязательно по порядку).&lt;BR&gt;&lt;BR&gt;Дополнительно у PL-таблиц есть разные методы Exists, First, Last, Prior, Next, Delete...&lt;BR&gt;&lt;BR&gt;Более сложными аналогами могут быть VARRAYS и NESTED TABLES.</description><pubDate>Mon, 27 May 2002 18:58:00 GMT</pubDate><dc:creator>r-ivan</dc:creator></item><item><title>Аналог в Oracle временных таблиц MsSql</title><link>http://www.relib.com/forums/Topic751040-21-1.aspx</link><description>Перевожу проект MSSQL в Oracle. В mssql много используют временные таблицы в процедурах и блоках как локальные переменные. Есть аналоги этого в oracle</description><pubDate>Mon, 27 May 2002 08:06:00 GMT</pubDate><dc:creator>ilgizmail</dc:creator></item></channel></rss>