Как создать временную таблицу в базе данных Oracle?
Я хотел бы создать временную таблицу в базе данных Oracle
что-то вроде
Declare table @table (int id)
в SQL server
и чем заполнить его с помощью оператора select
это возможно?
спасибо
3 ответов
да, Oracle имеет временные таблицы. Вот ссылка на AskTom статья, описывающая их и здесь является официальной документацией oracle 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 с помощью встроенных представлений.
просто совет.. Временные таблицы в Oracle отличаются от SQL Server. Вы создаете его один и только один раз, а не каждый сеанс. Строки, которые вы вставляете в него, видны только вашему сеансу и автоматически удаляются (т. е. TRUNCATE
, а не DROP
) когда вы заканчиваете сеанс (или конец транзакции, в зависимости от того, какое предложение" on COMMIT " вы используете).
CREATE GLOBAL TEMPORARY TABLE Table_name
(startdate DATE,
enddate DATE,
class CHAR(20))
ON COMMIT DELETE ROWS;