Таблица Creating SQL с помощью имени динамической переменной

Я хочу составить резервные таблицы SQL с помощью имен переменной.

что-то вроде

DECLARE @SQLTable Varchar(20) 
SET @SQLTable = 'SomeTableName' + ' ' + '20100526' 
SELECT * INTO quotename(@SQLTable)
 FROM SomeTableName

но я добираюсь

Неправильный синтаксис рядом '@SQLTable'.

Это - просто часть маленького сценария для maintence, таким образом, я не должен волноваться об инжекциях.

12
задан Luke Girvin 24 January 2019 в 16:27
поделиться

4 ответа

DECLARE @MyTableName nvarchar(20);
DECLARE @DynamicSQL nvarchar(1000);

SET @MyTableName = "FooTable";


SET @DynamicSQL = N'SELECT * INTO ' + @MyTableName + ' FROM BarTable';

EXEC(@DynamicSQL);
17
ответ дан 2 December 2019 в 04:52
поделиться

К сожалению, вы не можете использовать переменные связывания для имен таблиц, столбцов и т. Д. В этом случае вы должны сгенерировать динамический SQL и использовать exec .

6
ответ дан 2 December 2019 в 04:52
поделиться

Вам следует изучить использование синонимов:

- Создайте синоним для таблицы Product в AdventureWorks2008R2. СОЗДАТЬ SYNONYM MyProduct ДЛЯ AdventureWorks2008R2.Production.Product; GO

- запросить таблицу Product с использованием синонима. ИСПОЛЬЗУЙТЕ tempdb; ИДТИ ВЫБЕРИТЕ ProductID, имя ОТ MyProduct ГДЕ ProductID <5; GO

http://msdn.microsoft.com/en-us/library/ms177544.aspx

4
ответ дан 2 December 2019 в 04:52
поделиться
DECLARE @Script NVARCHAR(MAX);
SET @Script = N'SELECT * INTO SomeTableName_' + N'20100526' + N' FROM SomeTableName';
EXEC sp_executesql @Script

Я оставил дату отдельно, так как предполагаю, что вы хотите рассчитывать ее для каждого прогона.

4
ответ дан 2 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: