在存储过程中,这句该如何写

在存储过程中,这句该怎么写?
在存储过程中,下面这句如何写才能正确?

Select @NUM=Count(*) from  @temptablename

@NUM 变量
@temptablename 表名
------解决思路----------------------

declare @NUM INT;
declare @temptablename Nvarchar(20)
declare @sql  Nvarchar(2000)
declare @num_out int;
declare @params nvarchar(200)

set @temptablename='BASMIG'
set @sql ='Select @num_out=count(*) from '+ @temptablename
set @params ='@num_out int output '

exec sp_executesql 
@sql,
@params,
@num_out=@NUM OUTPUT
SELECT @NUM