insert into @indextable(nid) select News_ID from @NewTbles  order by News_Date desc
select * from @NewTbles O,@indextable t where O.News_ID=t.nid
and t.id between @PageLowerBound+1 and @PageUpperBound order by t.id这个语句我没有读懂,我想主要是这个语句的语法问题

解决方案 »

  1.   

    insert into @indextable(nid) select News_ID from @NewTbles  order by News_Date desc
    select * from @NewTbles O,@indextable t where O.News_ID=t.nid
    and t.id between @PageLowerBound+1 and @PageUpperBound order by t.id
    我的想法是让@NewTbles传过来一个表明加上查询语句,就是这个样子。
    我也不知道语法,能帮我看看该怎么改造吗?
      

  2.   

    from @NewTbles  
    這個變量需要表變量,之前定義的 declare @NewTbles varchar(1000)
      

  3.   

    如果@NewTbles是表名,需要用動態語句,比如exec('select * from '+@NewTbles)
      

  4.   

    CREATE procedure newsList 
    (@strwhere NVarChar(1000),
    @pagesize int,
    @pageindex int,
    @docount bit)
    as
    set nocount on
    if(@docount=1)
    select count(News_Date) from Table_news
    else
    begin
    --declare @indextable table(id int identity(1,1),nid int)
    --对一Table 这个变量声明我没有用过,你可以过外面先建一个表,表名为@cc变量的值,
    --我只会这么多,看一下有没有帮助
    declare @cc varchar
    declare @PageLowerBound int
    declare @PageUpperBound int
    declare @NewTbles varchar(1000)
    declare @aa varchar(2000)         --加入
    declare @bb varchar(2000)        --加入
    set @NewTbles=@strwhere
    set @PageLowerBound=(@pageindex-1)*@pagesize
    set @PageUpperBound=@PageLowerBound+@pagesize
    set rowcount @PageUpperBound
    select @aa='insert into'+ @cc +' select News_ID from'+ @NewTbles  +'order by News_Date desc'exec @aaselect @bb='select * from'+@NewTbles +' O,'+@cc+' t where O.News_ID=t.nid
    and t.id between'+ @PageLowerBound+'+1 and '+@PageUpperBound+' order by t.id'exec @bb
    end
    set nocount off
    GO
      

  5.   

    --試下看看,隨手寫的可能有錯
    CREATE procedure newsList 
    (@strwhere NVarChar(1000),
    @pagesize int,
    @pageindex int,
    @docount bit)
    as
    set nocount on
    if(@docount=1)
    select count(News_Date) from Table_news
    else
    begin
    declare @indextable table(id int identity(1,1),nid int)
    declare @PageLowerBound int
    declare @PageUpperBound intset @PageLowerBound=(@pageindex-1)*@pagesize
    set @PageUpperBound=@PageLowerBound+@pagesize
    set rowcount @PageUpperBounddeclare @sql varchar(8000)
    set @sql='declare @indextable table(id int identity(1,1),nid int)  insert into @indextable(nid) select News_ID from  '+@strwhere+' order by News_Date desc  '
    set @sql=@sql+' select * from '+@strwhere+' O,@indextable t where O.News_ID=t.nid
    and t.id between @PageLowerBound+1 and @PageUpperBound order by t.id 'exec(@sql)end
    set nocount off
    GO