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



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



что-то вроде



Declare table @table (int id)


в SQL server



и чем заполнить его с select оператор



это возможно?



спасибо

733   3  

3 ответов:

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

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

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

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

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

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

просто совет.. Временные таблицы в Oracle отличаются от SQL Server. Вы создаете его один раз и только один раз, а не каждый сеанс. Строки, которые вы вставляете в него, видны только для вашего сеанса и автоматически удаляются (т. е. TRUNCATE, а не DROP) когда вы заканчиваете сеанс ( или конец транзакции, в зависимости от того, какое предложение "on COMMIT" вы используете).

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

Comments

    Ничего не найдено.