if   exists(select   *   from   tempdb..sysobjects   where   id=object_id( 'tempdb..#temptb2 ')) 
drop table #temptb2 declare @sql nvarchar(max)
set @sql='select row_number() over(order by field1 desc) as recordid,  * into #temptb2 from table3 where ' + @field +'=''' + @keyword + ''' order by field1 desc'
exec(@sql)
select * from #temptb2 where recordid between ((@pageIndex-1)*@pageSize+1) and @pageIndex*@pageSize
select @recordcount=count(1) from #temptb2
drop table #temptb2定义的@sql是用来执行的sql语句,里面有一个临时表#temptb2,
怎样将临时表嵌套到变量中,
执行上面存储过程提示:对象名  '#temptb2' 无效。

解决方案 »

  1.   

    将语句select row_number() over(order by field1 desc) as recordid, * into #temptb2 from table3 where ' + @field +'=''' + @keyword + ''' order by field1 desc和select * from #temptb2 where recordid between ((@pageIndex-1)*@pageSize+1) and @pageIndex*@pageSize
    select @recordcount=count(1) from #temptb2合并放在
    exec ()里面去就行了。这样临时表就有效了。
      

  2.   

    if exists(select * from tempdb..sysobjects where id=object_id( 'tempdb..#temptb2 ')) 
    drop table #temptb2--> 先建表结构
    select convert(int, null) as recordid, * into #temptb2 from table3 where 1=0declare @sql nvarchar(max)
    --> insert
    set @sql='insert #temptb2 select row_number() over(order by field1 desc) as recordid, * from table3 where ' + @field +'=''' + @keyword + ''' order by field1 desc'
    exec(@sql)
    select * from #temptb2 where recordid between ((@pageIndex-1)*@pageSize+1) and @pageIndex*@pageSize
    select @recordcount=count(1) from #temptb2
    drop table #temptb2