declare @indextable table(id int identity(1,1),nid int)
set rowcount @endIndex
insert into @indextable(nid) select ID from Info order by ID desc set @sqlStr=@sqlStr + 'select * from Info O, ' + @indextable +' t where O.ID=t.nid
and t.id between ' + @startIndex + ' and ' + @endIndexprint @sqlStr请问如上代码,明明已经申明了@indextable ,为什么还报错,要申明标量变量 "@indextable"。呢?
请大家帮帮忙,谢谢了!
set rowcount @endIndex
insert into @indextable(nid) select ID from Info order by ID desc set @sqlStr=@sqlStr + 'select * from Info O, ' + @indextable +' t where O.ID=t.nid
and t.id between ' + @startIndex + ' and ' + @endIndexprint @sqlStr请问如上代码,明明已经申明了@indextable ,为什么还报错,要申明标量变量 "@indextable"。呢?
请大家帮帮忙,谢谢了!
--根据楼主的意图,参考如下:
DECLARE @sqlStr VARCHAR(MAX), @startIndex INT, @endIndex INT
CREATE TABLE #indextable (id int identity(1,1),nid int)
set rowcount @endIndex
insert into #indextable(nid) select ID from Info order by ID DESC
set @sqlStr=@sqlStr + 'select * from Info O, #indextable t where O.ID=t.nid and t.id between ' + LTRIM(@startIndex) + ' and ' + LTRIM(@endIndex)
EXEC(@sqlStr)
set rowcount @endIndexinsert into #indextable(nid)
select ID from Info order by ID descset @sqlStr=@sqlStr + 'select * from Info O, ' + '#indextable' +' t where O.ID=t.nid
and t.id between ' + @startIndex + ' and ' + @endIndexprint @sqlStr