Вы не можете использовать переменную для представления объекта. Например, если у вас есть заявление:
DECLARE @Var sysname = N'MyColumn';
SELECT @Var
FROM MyTable;
Вы не получите оператор со значениями из MyColumn
, вы получите набор данных, который повторяет буквальную строку N'MyColumn'
. Для этого вам нужно использовать динамический SQL:
--SQL Server uses sysname (nvarchar(128)) for object names, so I've changed the datatype here
DECLARE @destDatabaseName sysname;
DECLARE @destSchemaName sysname;
DECLARE @SQL nvarchar(MAX);
SET @destDatabaseName = N'Database_Name';
SET @destSchemaName = N'Schema_Name';
SET @SQL = N'USE ' + QUOTENAME(@destDatabaseName) + N';' + NCHAR(13) + NCHAR(10) +
N'TRUNCATE TABLE ' + QUOTENAME(@destSchemaName) + N'.[Application];';
EXEC sp_executesql @SQL;