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