当前位置:K88软件开发文章中心编程语言AspAsp01 → 文章内容

sql存储过程----分页显示表中的记录

减小字体 增大字体 作者:佚名     来源:asp编程网  发布时间:2018-12-30 8:29:51

通常在显示表中的记录的时候,由于记录很多,需要对记录进行分页显示,这里是利用sql存储过程进行分页显示
1、数据库和字段,conn.asp见
http://www.aspprogram.cn/detail.asp?id=35
请在表中添加几条记录

2、存储过程代码
 
 
 
 
CREATE 
PROCEDURE 
dbo.getUserList
 
 
 
 
 
 
 
@iPageCount 
int 
OUTPUT, 
 
 
--总页数
 
 
 
 
 
 
 
@iPage 
int, 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--当前页号
 
 
 
 
 
 
 
@iPageSize 
int 
 
 
 
 
 
 
 
 
 
 
 
--每页记录数
 
 
 
 
as
 
 
 
 
set 
nocount 
on
 
 
 
 
begin
 
 
 
 
 
 
 
--创建临时表 

 
 
 
 
 
 
 
create 
table 

#t 
(ID 
int 
IDENTITY, 
 
 
--自增字段
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
y_id 
int,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
y_username 
varchar(40),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
y_password 
varchar(40))
 
 
 
 
 
 
 
--向临时表中写入数据
 
 
 
 
 
 
 
insert 
into 

#t 

 
 
 
 
 
 
 
 
 
 
select 
y_id,y_username,y_password 
from 
dbo.[user]
 
 
 
 
 
 
 
 
 
 
 
 
 
order 
by 
y_id 
desc
 
 
 
 
 
 
 

 
 
 
 
 
 
 
--取得记录总数 

 
 
 
 
 
 
 
declare 
@iRecordCount 
int
 
 
 
 
 
 
 
set 
@iRecordCount 

@@rowcount

 
 
 
 
 
 
 
--确定总页数
 
 
 
 
 
 
 
IF 
@iRecordCount%@iPageSize=0
 
 
 
 
 
 
 
 
 
 
SET 
@iPageCount=CEILING(@iRecordCount/@iPageSize)
 
 
 
 
 
 
 
ELSE
 
 
 
 
 
 
 
 
 
 
SET 
@iPageCount=CEILING(@iRecordCount/@iPageSize)+1
 

 
 
 
 
 
 
 
--若请求的页号大于总页数,则显示最后一页
 
 
 
 
 
 
 
IF 
@iPage 
>
 
@iPageCount
 
 
 
 
 
 
 
 
 
 
SELECT 
@iPage 

@iPageCount

 
 
 
 
 
 
 
--确定当前页的始末记录
 
 
 
 
 
 
 
DECLARE 
@iStart 
int 
 
 
 
--start 
record
 
 
 
 
 
 
 
DECLARE 
@iEnd 
int 
 
 
 
 
 
--end 
record
 
 
 
 
 
 
 
SELECT 
@iStart 

(@iPage 

1) 

@iPageSize
 
 
 
 
 
 
 
SELECT 
@iEnd 

@iStart 

@iPageSize 

1

 
 
 
 
 
 
 
--取当前页记录 
 
 
 

 
 
 
 
 
 
 
select 

from 

#t 
where 
ID>
@iStart 
and 
ID<
@iEnd

 
 
 
 
 
 
 
--删除临时表
 
 
 
 
 
 
 
DROP 
TABLE 

#t

 
 
 
 
 
 
 
--返回记录总数
 
 
 
 
 
 
 
return 
@iRecordCount
 
 
 
 
end
GO


3、显示记录list2.asp
<
!--
#include 
file="
conn.asp"
-->

<
%
&
#39
**调用分页存储过程**
 
 
 
 
DIM 
pagenow,pagesize,pagecount,recordcount
 
 
 
 
DIM 
MyComm,MyRst
 
 
 
 
pagenow 
=Request("
pn"


 
 
 
 
&
#39
自定义函数用于验证自然数
 
 
 
 
if 
pagenow 

"
"
 
then 
pagenow 

1
 
pagenow=CInt(pagenow)
 
 
 
 
pagesize 

2
 
 
 
 
Set 
MyComm 

Server.CreateObject("
ADODB.Command"
)
 
 
 
 
with 
MyComm
 
 
 
 
 
 
 
.ActiveConnection 

conn 
 
 
 
 
 
 
 
 
 
&
#39
conn是数据库连接字串
 
 
 
 
 
 
 
.CommandText 
 
 
 
 
 

"
getUserList"
 
 
 
 
 
&
#39
指定存储过程名
 
 
 
 
 
 
 
.CommandType 
 
 
 
 
 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
&
#39
表明这是一个存储过程
 
 
 
 
 
 
 
.Prepared 
 
 
 
 
 
 
 
 

true 
 
 
 
 
 
 
 
 
 
 
 
 
 
&
#39
要求将SQL命令先行编译
 
 
 
 
 
 
 
&
#39
返回值(记录总量) 

 
 
 
 
 
 
 
.Parameters.Append 
.CreateParameter("
RETURN"
,2,4)
 
 
 
 
 
 
 
&
#39
出参(总页数)
 
 
 
 
 
 
 
.Parameters.Append 
.CreateParameter("
@iPageCount"
,3,2)
 
 
 
 
 
 
 
&
#39
入参(当前页号)
 
 
 
 
 
 
 
.P

[1] [2]  下一页


sql存储过程----分页显示表中的记录