create procedure Pro_MessageBoard
(
@startIndex int,
@endIndex int,
@strwhere nvarchar(200)
)asset nocount ondeclare @where varchar(200)set @where = @strwheredeclare @indextable table
(
id int identity(1,1),
nid int
)set rowcount @endIndex
exec('insert into ' + @indextable + ' (nid) select messageid from hx_MessageBoard ' + @where +  ' order by postdate desc ')set nocount offRETURN为什么会出错?提示必须声明变量 '@indextable'。
'@indextable'不是声明了吗?

解决方案 »

  1.   

    表变量不能这么用,楼主还是用临时表吧:create procedure Pro_MessageBoard 

    @startIndex int, 
    @endIndex int, 
    @strwhere nvarchar(200) 
    ) as set nocount on declare @where varchar(200) set @where = @strwhere create table #indextable(id int identity(1,1),nid int) set rowcount @endIndex 
    exec('insert into #(nid) select messageid from hx_MessageBoard ' + @where +  ' order by postdate desc ') set nocount off RETURN 
      

  2.   

    create procedure Pro_MessageBoard 

    @startIndex int, 
    @endIndex int, 
    @strwhere nvarchar(200) 
    ) as set nocount on declare @where varchar(200) set @where = @strwhere create  table table_name 

    id int identity(1,1), 
    nid int 
    ) set rowcount @endIndex 
    exec('insert into table_name (nid) select messageid from hx_MessageBoard ' + @where +  ' order by postdate desc ') set nocount off RETURN 
      

  3.   

    create procedure Pro_MessageBoard
    (
    @startIndex int,
    @endIndex int,
    @strwhere nvarchar(200)
    )asset nocount ondeclare @where varchar(200)set @where = @strwhereCreate table #indextable
    (
    id int identity(1,1),
    nid int
    )set rowcount @endIndex
    exec('insert into #indextable (nid) select messageid from hx_MessageBoard ' + @where +  ' order by postdate desc ')set nocount offRETURN 
      

  4.   

    ...看来还是得  Create table #indextable
    难后drop