В Oracle, вы можете создать временную таблицу, используя что-то вроде:SQL Server/Oracle: Частные временные таблицы
CREATE GLOBAL TEMPORARY TABLE temp_table (
field1 NUMBER,
field2 NUMBER
)
ON COMMIT DELETE ROWS;
... который может быть довольно изящным, так как это создает таблицу видимую для всех, но данные, введенные в таблицу, видны только ему или ей. Кроме того, эти данные автоматически удаляются в конце транзакции или сеанса (в зависимости от ее объявления), оставляя все остальные временные данные целыми и невредимыми.
В SQL Server, однако, вы можете создать временную таблицу с:
CREATE TABLE #temp_table (field1 INT, field2 INT);
... который, как я понимаю, по существу, и функционально отличается от реализации Oracle. Эта временная таблица видна только вам и немедленно удаляется (таблица) после использования.
Есть ли возможности в SQL Server для имитации поведения Oracle, как описано выше? Или это единственный способ работы с временными данными, связанный с необходимостью повторно создавать временную таблицу с каждой итерацией работы?
Можете ли вы объяснить, почему вы хотели бы имитировать поведение Oracle в SQLServer? Следует ли просто избегать требования выполнить инструкцию CREATE TABLE? –
@Mark ~ хорошо, это в первую очередь. Но если бы я имел дело с (1) повторяющимися вставками временных данных, (2) с обычно одним и тем же форматом данных и полями, (3) и уникален для пользователя (т. Е. Данные являются частными для пользовательского сеанса), он просто делает намного больше смысл обрабатывать все это в таблице в соответствии с реализацией Oracle. :) –
[Частные временные таблицы Oracle] (https://stackoverflow.com/a/48852466/5070879) – lad2025