一些简单的SQL面试题,仅供大家参考
管理结果集的分页
问:我怎样才能使用SQL Server对结果集的分页进行管理?
答:您经常需要使用一次一页的形式来显示一个结果集,并保证用户可以轻松查看各个结果集页面,特别是您在为Web站点开发程序的时候。虽然您可以使用ADO Recordset对象对结果集进行分页,但是这种解决办法不具有伸缩性。
为了解决伸缩性问题,您需要在结果集中包括一个具有唯一ID的列,例如在表中包括一个主键。以下代码介绍了一个简单的例子,它使用两个存储过程在各个页面间进行导航:
Create PROCEDURE spGetNextPage
@id varchar(11) =' 0',
@rows int = 0
AS
SET NOCOUNT ON
SET ROWCOUNT @rows
Select
a.au_id,
a.au_fname + ' ' + au_lname AS name
FROM
authors a
Where
a.au_id > @id
orDER BY
a.au_id
SET ROWCOUNT 0
SET NOCOUNT OFF
GO
Create PROCEDURE spGetPrevPage
@id varchar(11) =' 0',
@rows int = 0
AS
SET NOCOUNT ON
SET ROWCOUNT @ROWS
Select
a.au_id,
a.au_fname + ' ' + au_lname AS name
INTO
#temp
FROM
authors a
Where
a.au_id <@id
orDER BY
a.au_id desc
SET ROWCOUNT 0
Select
*
FROM
#temp
orDER BY
au_id
SET ROWCOUNT 0
SET NOCOUNT OFF