问一个存储过程中临时表的有关问题

问一个存储过程中临时表的问题
declare @Tmp table(字段1 varchar(128))
insert @Tmp  (a);
insert @Tmp  (ab);
insert @Tmp  (abb);
 declare @SampleSql nvarchar(2000)
set  @SampleSql =' inset into 库表1 select 字段1 from 库表2 where 字段1 in (select * from @Tmp2 where 字段1 like '%a%' )'

 exec (@SampleSql)
 delete @Tmp 

提示Tmp未定义变量;
正常的是能取值的,但是在拼接SQL语句里面,用不了,因为在库中不存在TMP这个表
但是又不想用create table @tmp

怎么处理??

------解决思路----------------------
引用:
declare @SampleSql nvarchar(2000)
set  @SampleSql ='declare @Tmp table(name varchar(128));select * from @Tmp'
exec (@SampleSql)
这样了如何给@Tmp 里面insert值进去啊?????


动态创建、动态使用
declare @SampleSql varchar(2000)
  --insert into tmp select 字段1 from @Tmp where 字段1 like '%a%'
  set @SampleSql='declare @Tmp table(字段1 varchar(128))'
  set @SampleSql=@SampleSql+' insert into @Tmp  values(''a'')'
 set  @SampleSql =@SampleSql+'insert into tmp select 字段1 from @Tmp where 字段1 like ''%a%'''
 PRINT @SampleSql

  exec (@SampleSql)