Как создать временную таблицу в базе данных Oracle?

Я хотел бы создать временную таблицу в базе данных Oracle

что-то вроде

Declare table @table (int id)

В SQL сервере

А затем заполните его оператором выбора

Является ли это возможным?

Спасибо

Ответ 1

Да, у Oracle есть временные таблицы. Вот ссылка на статью AskTom, описывающая их, и вот официальная документация оракула CREATE TABLE.

Однако в Oracle только данные во временной таблице являются временными. Таблица является обычным объектом, видимым для других сеансов. Это плохая практика - часто создавать и удалять временные таблицы в Oracle.

CREATE GLOBAL TEMPORARY TABLE today_sales(order_id NUMBER)
ON COMMIT PRESERVE ROWS;

В Oracle 18c добавлены частные временные таблицы, которые являются односессионными объектами в памяти. Смотрите документацию для более подробной информации. Частные временные таблицы могут быть динамически созданы и удалены.

CREATE PRIVATE TEMPORARY TABLE ora$ptt_today_sales AS
SELECT * FROM orders WHERE order_date = SYSDATE;

Временные таблицы могут быть полезны, но они обычно используются в Oracle. Их часто можно избежать, объединяя несколько шагов в один оператор SQL с использованием встроенных представлений.

Ответ 2

Просто совет. Временные таблицы в Oracle отличаются от SQL Server. Вы создаете это ОДИН РАЗ и только ОДИН РАЗ, а не каждый сеанс. Строки, которые вы вставляете в него, видны только для вашего сеанса и автоматически удаляются (т. TRUNCATE, а не DROP), когда вы завершаете сеанс (или завершаете транзакцию, в зависимости от того, какое предложение "ON COMMIT" вы используете).

Ответ 3

CREATE GLOBAL TEMPORARY TABLE Table_name
    (startdate DATE,
     enddate DATE,
     class CHAR(20))
  ON COMMIT DELETE ROWS;