对存储过程中的结果如何分页

zywhao 2012-09-08 03:12:23
我在存储过程中,通过拼接字符串得到了一段sql语句
set @strSql='select cc.*,tbPortAutoComplte.PortName_chs from (select top 100 UserID,Name,CnName,SOG,InPort from VWShipInfo where ShipType=1 and (DATEDIFF(s, ReceiveTime, GETDATE()) <= 12*60*60) ) as cc LEFT OUTER JOIN dbo.tbPortAutoComplte ON cc.InPort = dbo.tbPortAutoComplte.ID '

EXEC Sp_executesql @strsql

执行结果为100条记录, 我想再增加一个分页,传入参数 @startRecordIndex 和@pageSize 直接在字符串中就将分页功能实现。 如传入参数 @startRecordIndex=20 @pagesize=10 从第20条记录开始显示10条, 查询结果就为需要的10条记录。。



谢谢高手们解答一下
...全文
159 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zywhao 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

SQL code
set @strSql='select top('+ @pagesize+') cc.*,tbPortAutoComplte.PortName_chs from (select top 100 UserID,Name,CnName,SOG,InPort from VWShipInfo where ShipType=1 and (DATEDIFF(s, ReceiveTime,……
[/Quote]



dbo.tbPortAutoComplte.ID>'+@startRecordIndex 其中的startRecordIndex 不是记录的ID 是记录数, 例如我已经显示到19条了, 这次从第20条记录显示。。 我觉这个语句还是有些问题呢
luochaowei1987 2012-09-09
  • 打赏
  • 举报
回复

set @strSql='select cc.*,tbPortAutoComplte.PortName_chs from (select top 100 UserID,Name,CnName,SOG,InPort from VWShipInfo where ShipType=1 and (DATEDIFF(s, ReceiveTime, GETDATE()) <= 12*60*60) ) as cc LEFT OUTER JOIN dbo.tbPortAutoComplte ON cc.InPort = dbo.tbPortAutoComplte.ID ';
with t(c1,c2) as
(
EXEC Sp_executesql @strsql
)
select top @pagesize * from t where c1 not int(select top (@startRecordIndex-1) c1 from t order by c1)order by c1
以学习为目的 2012-09-08
  • 打赏
  • 举报
回复
declare @startRecordIndex  int,
@pagesize int
set @startRecordIndex=20
set @pagesize=10

set @strSql='select top('+@pagesize+')cc.*,tbPortAutoComplte.PortName_chs from (select top 100 UserID,Name,CnName,SOG,InPort from VWShipInfo where ShipType=1 and (DATEDIFF(s, ReceiveTime, GETDATE()) <= 12*60*60) ) as cc LEFT OUTER JOIN dbo.tbPortAutoComplte ON cc.InPort = dbo.tbPortAutoComplte.ID where dbo.tbPortAutoComplte.ID>'+@startRecordIndex

EXEC Sp_executesql @strsql
-晴天 2012-09-08
  • 打赏
  • 举报
回复
set @strSql='select top('+ @pagesize+') cc.*,tbPortAutoComplte.PortName_chs from (select top 100 UserID,Name,CnName,SOG,InPort from VWShipInfo where ShipType=1 and (DATEDIFF(s, ReceiveTime, GETDATE()) <= 12*60*60) ) as cc LEFT OUTER JOIN dbo.tbPortAutoComplte ON cc.InPort = dbo.tbPortAutoComplte.ID where dbo.tbPortAutoComplte.ID>'+@startRecordIndex

EXEC Sp_executesql @strsql

流逝 2012-09-08
  • 打赏
  • 举报
回复
取第20条记录开始显示10条记录的 语句 语句类似于:
select top 10 * from (select top 30 * from zhiwu_table order by id) as dd order by id desc

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧