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这个语句我没有读懂,我想主要是这个语句的语法问题
select * from @NewTbles O,@indextable t where O.News_ID=t.nid
and t.id between @PageLowerBound+1 and @PageUpperBound order by t.id这个语句我没有读懂,我想主要是这个语句的语法问题
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传过来一个表明加上查询语句,就是这个样子。
我也不知道语法,能帮我看看该怎么改造吗?
這個變量需要表變量,之前定義的 declare @NewTbles varchar(1000)
(@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
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