楼主出现三个错误
1,数据库里是优先处理数字的 你需要把@int强转成varchar(20) 然后才能拼装
2,SQL里面的执行的 EXEC (@sql) @sql位置不支持变量的拼装,它只支持符串的拼装
3,字符串之间的空格问题
所以要想处理这样的事情,只能在外面先把串拼好了然后再执行
declare @int int,@sql varchar(100)
set @int=1
set @sql = 'select top ' + cast(@int as varchar(20)) + ' * from myTable'
exec (@sql)