#sql-server
Вопрос:
Я создаю процедуру для создания временных таблиц, но я хочу сделать ее более общей, а не для временной только одной исходной таблицы
ALTER PROCEDURE [dbo].[CREATE_TEMP_TABLES]
AS
IF NOT EXISTS (SELECT * FROM SYS.TABLES
WHERE NAME=N'TEMP_FactAdditional' AND type ='U')
BEGIN
CREATE TABLE dbo.TEMP_FactAdditional
(
[ProductKey] [int] NOT NULL,
[CultureName] [nvarchar](50) NOT NULL,
[ProductDescription] [nvarchar](max) NOT NULL
)
END
GO
поэтому IF NOT EXISTS (SELECT * FROM SYS.TABLES WHERE NAME=N'TEMP_FactAdditional' AND type ='U')
здесь я вижу его только создание TEMP_FactAdditional стол и у меня вроде 8 или 9 оригинальных таблиц, в которых каждая из них отличается, CREATE TABLE dbo.TEMP_FactAdditional
я думал, чтобы добавить какую-то функцию или метод, чтобы сделать более общий, но у меня не так много знаний об этом, я, проектируя склад, и мой первый шаг заключается в повышении эффективности передачи данных от дБ до ДБ. например, здесь на фото . Может ли кто-нибудь помочь мне сделать процедуру более эффективной?
Комментарии:
1. К вашему сведению, вызываемая таблица
TEMP_FactAdditional
не является временной таблицей. Временные объекты начинаются с a#
и не соответствуют требованиям схемы.2. Спасибо за информацию, так что #TEMP_FactAdditional-это настоящая временная таблица, это что-нибудь меняет в SSMS?
3. В SSMS? Какое отношение все вышесказанное имеет к SSMS?
4. Что ты имеешь в виду? Я постоянно работаю с SSMS для разработки базы данных, процедур, временных таблиц и исходных таблиц.
5. Плохая идея, гораздо проще просто создать каждую таблицу отдельно. Вы подумывали о том, чтобы просто получить надлежащее программное обеспечение ETL для перемещения данных?
Ответ №1:
Ну, я не собираюсь комментировать общий подход, но если вам нужен общий способ создания таблиц для перемещения данных, вы могли бы сделать что-то подобное….
SELECT *
INTO my_new_table_name
FROM my_old_table_name
WHERE 1 = 0
Это создаст новую таблицу с той же структурой и без данных. Тогда теоретически вы могли бы написать процедуру с использованием динамического SQL для запуска этого кода для списка таблиц, таким образом «создав» несколько таблиц в абстрактном случае. Вы можете передать два параметра, два имени таблиц.