首先
在数据库中建立一个存储过程
该存储过程接受两个输入参数
分别是要返回数据的第一条记录数和最后一条记录数
要创建一个返回指定条记录结果的存储过程
首先必须指定返回结果集的条记录数
这里用table变量(SQL Server
)
table变量尽管是存储在内存中的
但在存储过程结束后自动释放
创建的存储过程如下
create proc InsertStudents
@Student_Last_Name as varchar() = null
@StartRow as int = null
@StopRow as int = null
AS
建立有标识符列的table变量
declare @t_table table
(
[rownum] [int] IDENTITY ( ) Primary key NOT NULL
[Student_Last_Name] [varchar] ()
[Student_First_Name] [varchar] ()
)
在返回指定的@StopRow行数之后停止处理查询
Set RowCount @StopRow
插入到table变量中
insert @t_table
(
[Student_Last_Name][Student_First_Name]
)
SELECT [Student_Last_Name][Student_First_Name]
FROM Students
WHERE Student_Last_Name like % + @Student_Last_Name like %
ORDER BY Student_Last_Name
返回到正确的结果
SELECT * FROM @t_table WHERE rownum >= @StartRow
ORDER BY rownum
GO
参数@StartRow和@StopRow接收整数值代表要返回的开始记录和结束记录如果要在一个条记录的页面中返回第页我们就可以设置@StartRow为@StopRow为
table变量@t_table中定义了一个叫rownum的整数类型的列并指定为标识符列它将在插入数据的时候自动增加起到排序作用Set RowCount语句是优化性能的关键它会告诉SQL Server进行限制要插入的数据如果我们要条记录之间的数据那么就可以不必插入大于条记录的数据最后的SQL语句通过@t_table的table变量选择rownum大于或者等于@StartRow的那些数据集然后把它们返回到Web服务器由Web服务器绑定到DataGrid对象但如果浏览者请求的页数越来越大需要向table变量填充的记录就越多导致页面性能有所下降因此性能将依赖于你计算机的硬件和你要返回的记录数但为了减轻数据库和网络传输的压力设计合理的查询结果页数是很见效的
[] [] [] []