我的存储过程如下:
CREATE PROC NewsTitlePagedOFClassID --分页查找分类新闻标题
(
@PageIndex int, 
@PageSize int,
@ClassID int --新闻分类ID
)
 AS
 BEGIN
 DECLARE @PageLowerBound int
 DECLARE @PageUpperBound int
DECLARE @RowsToReturn int
SET @RowsToReturn = @PageSize * (@PageIndex + 1)
SET ROWCOUNT @RowsToReturnSET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize + 1
CREATE TABLE #PageIndex 
(
IndexId int IDENTITY (1, 1) NOT NULL,
NewsID int,
ClassID int
)
INSERT INTO #PageIndex(NewsID)
SELECT NewsID FROM News where ClassID = @ClassID ORDER BY NewsID DESC
SELECT COUNT(NewsID) FROM News
SELECT N.* FROM News N, #PageIndex PageIndex
WHERE 
    N.NewsID = PageIndex.NewsID AND
    PageIndex.IndexID > @PageLowerBound AND
    PageIndex.IndexID < @PageUpperBound
ORDER BY 
    PageIndex.IndexIDEND 请问该如果返回News表中有多少条记录呢?

解决方案 »

  1.   


    /*--利用SQL未公开的存储过程实现分页方法简单且效率高,已知的问题就是要多返回一个空的记录集解决的方法是在前台调用时,用 set recordset=recordset.nextrecordset
    的方法跳过第一个记录集此方法由J9988提供,我只是将它改成了方便调用的存储过程--邹建 2004.05(引用请保留此信息)--*//*--调用示例declare @PageCount int
    exec sp_PageView 
    @sql='select * from sysobjects',
    @PageCurrent=2,
    @PageCount=@PageCount out
    SELECT @PageCount
    --*/
    CREATE PROC [dbo].[Select]   
    @sql         ntext,     --要执行的sql语句
    @PageCurrent int=1,     --要显示的页码
    @PageSize    int=20,    --每页的大小
    @PageCount   int OUTPUT --总页数
    AS
    SET NOCOUNT ON
    DECLARE @p1 int
    --初始化分页游标
    EXEC sp_cursoropen 
    @cursor=@p1 OUTPUT,
    @stmt=@sql,
    @scrollopt=1,
    @ccopt=1,
    @rowcount=@PageCount OUTPUT--计算总页数
    IF ISNULL(@PageSize,0)<1 
    SET @PageSize=10
    SET @PageCount=(@PageCount+@PageSize-1)/@PageSize
    IF ISNULL(@PageCurrent,0)<1 OR ISNULL(@PageCurrent,0)>@PageCount
    SET @PageCurrent=1
    ELSE
    SET @PageCurrent=(@PageCurrent-1)*@PageSize+1--显示指定页的数据
    EXEC sp_cursorfetch @p1,16,@PageCurrent,@PageSize--关闭分页游标
    EXEC sp_cursorclose @p1