源表不限,在输入的SQLSTR中确定,比如:
SQLSTR="select * from table "
得到的记录总共有458条,则ReCount为458
每页显示记录数PageSize 为10,那么总页数PageCount为46
要显示的页码PageNo为10,那输出来临时表的记录为
第101条到第110条记录。
这个我用VB做了一个DLL可以达到了,但是要是记录太多的时候速度跟不上,因此想移植到数据库中做一个存储过程来处理。
SQLSTR="select * from table "
得到的记录总共有458条,则ReCount为458
每页显示记录数PageSize 为10,那么总页数PageCount为46
要显示的页码PageNo为10,那输出来临时表的记录为
第101条到第110条记录。
这个我用VB做了一个DLL可以达到了,但是要是记录太多的时候速度跟不上,因此想移植到数据库中做一个存储过程来处理。
解决方案 »
- 一个很纠结的SQL语句。
- SQLserver2000 拼接字符串的问题!
- 如何合并两张表的同时能够查询到合并的那张表
- 数据日志满了怎么啊?
- 求SQL 取按浏览量排序第2-10位的语句
- SQL2005安装出错提示未指定以下帐户属性:“AGTACCOUNT”。这些属性为安装的服务指定启动帐户。
- 大力!我找你
- 关于动态添加列
- SQL语句简单问~~~~~~~~~~~~!急,谢谢了!
- 关于SQL SERVER 备份文件保密问题????
- 请教一个用TStoredProc控件调用SQL Server 2000存储过程的问题。
- 請問在.net開發環境中如何調試 Sql Server's Stored Procedure?
create procedure page_mk
(
@page int output,
@record int output
)
as
begin
select *,identity(int,1,1) as ord into #tmp_1 from table order by ...
select *,cast(ord/10+1 as int) as pageno into #tmp_2 from #tmp_1 order by ord
set @record=@@rowcount
set @page=(select top 1 pageno from #tmp_2 order by pageno desc)
select * from #tmp_2
end
方法不错,提点小建议:
首先按milchcow(奶牛)的意思(这名字怎么这么怪),应该还有两个输入参数:@PageSize 和 @PageNo。
另外,如果#tmp_1已经有了序号,那么就不需要tmp_2表了,直接选择序号为@PageSize * (@PageNo - 1) + 1到@PageSize * @PageNo 的记录应该就可以满足要求了。
即:select * from #tmp_1 where ord between @PageSize * (@PageNo - 1) + 1 and @PageSize * @PageNo
至于输出值,有个总记录数就行了,总页数应用程序自己就能得出,不用存储过程来算。
方法不错,提点小建议:
首先按milchcow(奶牛)的意思(这名字怎么这么怪),应该还有两个输入参数:@PageSize 和 @PageNo。
另外,如果#tmp_1已经有了序号,那么就不需要tmp_2表了,直接选择序号为@PageSize * (@PageNo - 1) + 1到@PageSize * @PageNo 的记录应该就可以满足要求了。
即:select * from #tmp_1 where ord between @PageSize * (@PageNo - 1) + 1 and @PageSize * @PageNo
至于输出值,有个总记录数就行了,总页数应用程序自己就能得出,不用存储过程来算。
我的名字很怪吗?我怎么不觉得呢?
如果预先分页查询时当然方便,但维护的操作会复杂很多。这个情况跟我曾做过的财务的
三栏帐、日记帐的帐页查询很相似。