MS->Oracle: select * into #a from T

asasasas
Дата: 02.06.2006 11:49:45
Добрый день.
select * into #a from T
Как перевести sql-оператор из MS в Оракл?
Это создание временной таблицы с заранее неизвестной структурой.

PS: не пинайте сильно: в ФАКе ответа не нашел, работаю с MS, к Оракул присматриваюсь.
.ass
Дата: 02.06.2006 11:51:24
подход менять
alex-ls
Дата: 02.06.2006 11:53:47
временные таблицы в мс и в оракле совсем разные вещи... Так что у Вас скорее всего ничего не выйдет. Нужно другое
asasasas
Дата: 02.06.2006 11:57:13
Ну, временные таблицы в оракуле всё-таки есть ( в факе вычитал).
А можно ли создать таблицу со структурой как у уже существующей таблицы.
Иными словами, скопировать программно структуру таблицы?
dmidek
Дата: 02.06.2006 12:03:39
Create Table AS subquery + where 1 = 0
alex-ls
Дата: 02.06.2006 12:10:06
asasasas
А можно ли создать таблицу со структурой как у уже существующей таблицы.
Иными словами, скопировать программно структуру таблицы?

можно, но это надо сделать один раз, как обычную таблицу...
Т.е. подход к временным таблицам другой, может вам коллекция нужна?
asasasas
Дата: 02.06.2006 12:13:56
dmidek
Create Table AS subquery + where 1 = 0

Да, вот пошёл по Вашей ссылке, увидел примеры:

Temporary Table Example
The following statement creates a temporary table today_sales for use by sales representatives in the sample database. Each sales representative session can store its own sales data for the day in the table. The temporary data is deleted at the end of the session.

CREATE GLOBAL TEMPORARY TABLE today_sales
   ON COMMIT PRESERVE ROWS 
   AS SELECT * FROM orders WHERE order_date = SYSDATE;
Вот, по-моему это оно. Т.е. выборка с помещением результата во временную таблицу ( с созданием врем.табл.)
На MS это выглядело бы так:
SELECT * into #today_sales
FROM orders WHERE order_date = getdate()
alex-ls
Дата: 02.06.2006 12:15:46
asasasas
Вот, по-моему это оно. Т.е. выборка с помещением результата во временную таблицу ( с созданием врем.табл.)

только не вздумайте create/drop делать постоянно...
dmidek
Дата: 02.06.2006 12:17:44
asasasas
dmidek
Create Table AS subquery + where 1 = 0

Да, вот пошёл по Вашей ссылке, увидел примеры:

Temporary Table Example
The following statement creates a temporary table today_sales for use by sales representatives in the sample database. Each sales representative session can store its own sales data for the day in the table. The temporary data is deleted at the end of the session.

CREATE GLOBAL TEMPORARY TABLE today_sales
   ON COMMIT PRESERVE ROWS 
   AS SELECT * FROM orders WHERE order_date = SYSDATE;
Вот, по-моему это оно. Т.е. выборка с помещением результата во временную таблицу ( с созданием врем.табл.)
На MS это выглядело бы так:
SELECT * into #today_sales
FROM orders WHERE order_date = getdate()

Да, это оно. Но если Вам нужна только структура, Вам нужно написать что то типа WHERE 1 = 0. Тогда все данные отсеются по этому всегда
ложному условию.
А ,да, и создавайте эту таблицу во время проектирования, а не в runtime.
Но это Вы уже наверное прочитали в FAQ.
asasasas
Дата: 02.06.2006 12:31:44
alex-ls
только не вздумайте create/drop делать постоянно...

а чем это черевато?
2 dmidek
нет, не прочитал еще в Факе. Чем черевато создание-удаление таблиц в рантайме?
(извините, но в MS такая практика очень распространена)