尝试运行此
时显示错误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'附近的语法不正确。
答案 0 :(得分:4)
这是正确的。您不能使用变量来传递表名。
你可以使用动态SQL:
declare @sql nvarchar(max);
set @sql = replace('TRUNCATE table @tableName', '@tableName', @tableName);
exec sp_executesql @sql;
允许SQL语句具有常量的参数,但不允许使用标识符的参数。这不仅是SQL Server的限制,而且是所有(?)数据库的限制。动态sql通常用于此目的。