它显示了一个错误,当尝试运行以下操作时
declare @tableName VARCHAR(250)
select @tableName='['+SCHEMA_NAME(schema_id)+'].['+name+']'
FROM sys.tables
WHERE '['+SCHEMA_NAME(schema_id)+'].['+name+']'='[Management].[Table_1]'
print @tableName
TRUNCATE table @tableName“@tableName”附近语法不正确。
发布于 2016-06-12 14:35:45
这是正确的。不能使用变量传递表名。
您可以使用动态SQL:
declare @sql nvarchar(max);
set @sql = replace('TRUNCATE table @tableName', '@tableName', @tableName);
exec sp_executesql @sql;SQL语句允许具有常量参数,但不允许具有标识符参数。这不仅是Server的限制,而且是(?)数据库。动态sql经常用于此目的。
https://stackoverflow.com/questions/37775426
复制相似问题