27,580
社区成员
发帖
与我相关
我的任务
分享
if exists (select * from sysobjects where name='Sp_NewsSID')
drop procedure Sp_NewsSID
go
create PROCEDURE Sp_NewsSID(
@pageIndex int,--当前页的索引
@pageSize int,--每页显示的记录数
@doCount bit,
@Class int,
@FlagID int=0 --判断分页
) with encryption AS
BEGIN
if(@doCount=1)--查询的是总记录数
select count(*) as counts from tbl_News
else--查询的是结果集
begin
declare @lower int--最小值pkid
declare @upper int--最大值pkid
declare @tempTable table(PKID int identity(1,1),eID int)--存储临时表值
set @lower=(@pageIndex-1)*@pageSize
set @upper=@lower+@pageSize
if(@FlagID=0)
begin
insert into @tempTable(eID) select News_ID from TBL_News order by News_ID desc
select News_ID,News_Title,News_Datetime,News_Type,News_Name,News_SID from TBL_News e ,@tempTable t where e.News_ID=t.eID
and t.pkid>@lower and t.pkid<=@upper and News_SID=@Class order by e.News_ID desc
end
end
end
go
exec Sp_NewsSID @pageIndex=1,@pageSize=10,@doCount=0,@Class=4--数据正常
exec Sp_NewsSID @pageIndex=2,@pageSize=10,@doCount=0,@Class=1--有数据,但应属于第一页的数据在这里出现
exec Sp_NewsSID @pageIndex=0,@pageSize=10,@doCount=0,@Class=1--没有数据
if exists (select * from sysobjects where name='Sp_NewsSID')
drop procedure Sp_NewsSID
go
create PROCEDURE Sp_NewsSID(
@pageIndex int,--当前页的索引
@pageSize int,--每页显示的记录数
@doCount bit,
@Class int,
@FlagID int=0 --判断分页
) with encryption AS
BEGIN
if(@doCount=1)--查询的是总记录数
select count(*) as counts from tbl_News
else--查询的是结果集
begin
declare @lower int--最小值pkid
declare @upper int--最大值pkid
declare @tempTable table(PKID int identity(1,1),eID int)--存储临时表值
set @lower=(@pageIndex-1)*@pageSize
set @upper=@lower+@pageSize
if(@FlagID=0)
begin
insert into @tempTable(eID) select News_ID from TBL_News where News_SID=@Class order by News_ID desc
select News_ID,News_Title,News_Datetime,News_Type,News_Name,News_SID from TBL_News e ,@tempTable t where e.News_ID=t.eID
and t.pkid>@lower and t.pkid<=@upper order by e.News_ID desc
end
end
end
go
楼主的主键没有联接全,试试这个
if exists (select * from sysobjects where name='Sp_NewsSID')
drop procedure Sp_NewsSID
go
create PROCEDURE Sp_NewsSID(
@pageIndex int,--当前页的索引
@pageSize int,--每页显示的记录数
@doCount bit,
@Class int,
@FlagID int=0 --判断分页
) with encryption AS
BEGIN
if(@doCount=1)--查询的是总记录数
select count(*) as counts from tbl_News
else--查询的是结果集
begin
declare @lower int--最小值pkid
declare @upper int--最大值pkid
declare @tempTable table(PKID int identity(1,1),News_ID int,News_BID int,News_SID int)--存储临时表值
set @lower=(@pageIndex-1)*@pageSize
set @upper=@lower+@pageSize
if(@FlagID=0)
begin
insert into @tempTable
select News_ID,News_BID,News_SID
from TBL_News
where News_SID=@Class
order by News_ID desc
select News_ID,News_Title,News_Datetime,News_Type,News_Name,News_SID
from TBL_News e ,@tempTable t
where e.News_ID=t.News_ID
and e.News_BID = t.News_BID
and e.News_SID = t.News_SID
and t.pkid>@lower
and t.pkid<=@upper
and News_SID=@Class
order by e.News_ID desc
end
end
end
go
if exists (select * from sysobjects where name='Sp_NewsSID')
drop procedure Sp_NewsSID
go
create PROCEDURE Sp_NewsSID(
@pageIndex int,--当前页的索引
@pageSize int,--每页显示的记录数
@doCount bit,
@Class int,
@FlagID int=0 --判断分页
) with encryption AS
BEGIN
if(@doCount=1)--查询的是总记录数
select count(*) as counts from tbl_News
else--查询的是结果集
begin
declare @lower int--最小值pkid
declare @upper int--最大值pkid
declare @tempTable table(PKID int identity(1,1),eID int,News_SID int )--存储临时表值
set @lower=(@pageIndex-1)*@pageSize
set @upper=@lower+@pageSize
if(@FlagID=0)
begin
insert into @tempTable(eID)
select News_ID, News_SID from TBL_News where News_SID = @Class order by News_ID desc
select News_ID,News_Title,News_Datetime,News_Type,News_Name,News_SID from TBL_News e inner join @tempTable t on e.id=t.eID and e.News_SID = t.News_SID
where e.News_SID = @Class and t.pkid>@lower and t.pkid<=@upper and order by e.News_ID desc
end
end
end
go
(1786403 行受影响)
id name PKID eID
----------- -------------------------------------------------- ----------- -----------
1786403 test 1 1786403
1786402 test 2 1786402
1786401 test 3 1786401
1786400 test 4 1786400
1786399 test 5 1786399
1786398 test 6 1786398
1786397 test 7 1786397
1786396 test 8 1786396
1786395 test 9 1786395
1786394 test 10 1786394
(10 行受影响)
(1786403 行受影响)
id name PKID eID
----------- -------------------------------------------------- ----------- -----------
1786393 test 11 1786393
1786392 test 12 1786392
1786391 test 13 1786391
1786390 test 14 1786390
1786389 test 15 1786389
1786388 test 16 1786388
1786387 test 17 1786387
1786386 test 18 1786386
1786385 test 19 1786385
1786384 test 20 1786384
(10 行受影响)
(1786403 行受影响)
id name PKID eID
----------- -------------------------------------------------- ----------- -----------
(0 行受影响)