IF EXISTS (SELECT name 
   FROM   sysobjects 
   WHERE  name = N'xjtu_custompaging' 
   AND    type = 'P')
    DROP PROCEDURE xjtu_custompaging
GOCREATE PROCEDURE xjtu_custompaging 
    @recordcount int OUTPUT,
    @state int OUTPUT,
    @categoryid int=0,
    @pagesize int,
    @totalpage int OUTPUT,
    @currentpage int
AS
    DECLARE @startid int
    DECLARE @endid int
-- =============================================
-- Create table with IDENTITY column
-- =============================================
IF EXISTS (SELECT name 
   FROM   sysobjects 
   WHERE  name = N'#BookList' 
   AND    type = 'U')
    DROP TABLE #BookListCREATE TABLE #BookList 
(
    ID int IDENTITY(1,1) PRIMARY KEY,
    BookID int
)
    IF(@categoryid=0)
        INSERT INTO #BookList (BookID) SELECT ID FROM BookStore ORDER BY AddDate DESC
    ELSE
        INSERT INTO #BookList (BookID) SELECT ID FROM BookStore 
        Where CategoryID=@categoryid ORDER BY AddDate DESC     IF(@categoryid!=0)
        SELECT @recordcount=COUNT(ID) FROM BOOKSTORE WHERE CategoryID=@categoryid
    ELSE        SELECT @recordcount=COUNT(ID) FROM BOOKSTORE----这里要转换为浮点数
    SELECT @totalpage=cast(@recordcount+@pagesize-1 as decimal(10,1))/@pagesize
    IF(@totalpage<@currentpage)
SELECT @state=0
    RETURN
--设置起始结束ID
    SET @startid=(@currentpage-1)*@pagesize
    SET @endid=(@currentpage*@pagesize+1)
--开始取出数据
    SELECT B.ID,B.BookName,B.Writer,B.Publisher,B.Summary,B.AddDate,A.BookID
        FROM #BookList A INNER JOIN BookStore B ON A.BookID=B.ID Where A.ID>@startid AND A.ID <@endid
GO

解决方案 »

  1.   

    IF EXISTS (SELECT name 
       FROM   sysobjects 
       WHERE  name = N'xjtu_custompaging' 
       AND    type = 'P')
        DROP PROCEDURE xjtu_custompaging
    GOCREATE PROCEDURE xjtu_custompaging 
        @recordcount int OUTPUT,
        @state int OUTPUT,
        @categoryid int=0,
        @pagesize int,
        @totalpage int OUTPUT,
        @currentpage int
    AS
        DECLARE @startid int
        DECLARE @endid int
    -- =============================================
    -- Create table with IDENTITY column
    -- =============================================
    IF EXISTS (SELECT name 
       FROM   sysobjects 
       WHERE  name = N'#BookList' 
       AND    type = 'U')
        DROP TABLE #BookListCREATE TABLE #BookList 
    (
        ID int IDENTITY(1,1) PRIMARY KEY,
        BookID int
    )
        IF(@categoryid=0)
            INSERT INTO #BookList (BookID) SELECT ID FROM BookStore ORDER BY AddDate DESC
        ELSE
            INSERT INTO #BookList (BookID) SELECT ID FROM BookStore 
            Where CategoryID=@categoryid ORDER BY AddDate DESC     IF(@categoryid!=0)
            SELECT @recordcount=COUNT(ID) FROM BOOKSTORE WHERE CategoryID=@categoryid
        ELSE        SELECT @recordcount=COUNT(ID) FROM BOOKSTORE----这里要转换为浮点数
        SELECT @totalpage=cast(@recordcount+@pagesize-1 as decimal(10,1))/@pagesize
        IF(@totalpage<@currentpage)
    SELECT @state=0
        RETURN
    --设置起始结束ID
        SET @startid=(@currentpage-1)*@pagesize
        SET @endid=(@currentpage*@pagesize+1)
    --开始取出数据
        SELECT B.ID,B.BookName,B.Writer,B.Publisher,B.Summary,B.AddDate,A.BookID
            FROM #BookList A INNER JOIN BookStore B ON A.BookID=B.ID Where A.ID>@startid AND A.ID <@endid
    GO
      

  2.   

    执行结果:(所影响的行数为 2 行)存储过程: Xjtuarc.dbo.xjtu_custompaging
    返回代码 = 0
    输出参数: 
    @recordcount = 2
    @state = <NULL>
    @totalpage = 1
    ////////////////////////////////////////////
    我的那个也是这样子,而且在应用程序中确实取不到数据帮忙哦,谢谢
      

  3.   

    IF(@totalpage<@currentpage)
    --这里缺BEGIN,
        BEGIN
    SELECT @state=0
             RETURN
        END
    --设置起始结束ID
        SET @startid=(@currentpage-1)*@pagesize
        SET @endid=(@currentpage*@pagesize+1)
    --开始取出数据