27,579
社区成员
发帖
与我相关
我的任务
分享
if (pageNumber > 1)
{
strSql = string.Format(@"select top {3} * from {0} where ID > (select max(id) from (select top ({1}*{3}) id from {0} Order By {2})A) Order By {2}", tableName, pageNumber, orderByColmn,Convert.ToInt32(this.txtPageCount.Text));
}
else
{
strSql = string.Format(@"select top {2} * from {0} Order By {1} ", tableName, orderByColmn, Convert.ToInt32(this.txtPageCount.Text));
}
create table TestTable
(
id int identity(1,1),
Name varchar(50),
Remark varchar(50)
)
declare @i int
set @i=0;
while @i<100
begin
insert into TestTable values (CAST(NEWID() as varchar(50)),CAST(NEWID() as varchar(50)))
set @i=@i+1
end
create PROCEDURE TestProc
-- Add the parameters for the stored procedure here
(@pageSize int,
@pageIndex int)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @sql nvarchar(500)
-- Insert statements for procedure here
set @sql='SELECT TOP'+ str(@pageSize) +' * FROM TestTable'
+' WHERE ID > (SELECT MAX(id)FROM (SELECT TOP '+str(@pageSize*@pageIndex)+' id FROM TestTable ORDER BY id) t )'+
'ORDER BY ID'
exec (@sql)
END
GO
--每次不是这样执行的吗?
exec TestProc 10,2
--那你每次不是重新查询了,
--那还用担心什么被删了啥的?