日期:2014-05-17  浏览次数:20477 次

分页存储过程:遇到被零除错误。高手帮忙解决下。

CREATE PROCEDURE [dbo].[sp_GetPageList](
    @TblName nvarchar(50) = N'', --必填:进行分页的表名
    @FieldText nvarchar(1000) = N'', --选填:显示的字段,默认为 全部字段
    @Pkey nvarchar(50) = N'', --必填:主键或唯一键(数值类型),推荐添加索引
    @WhereText nvarchar(1000) = N'', --选填:Where 条件句
    @OrderField nvarchar(100) = N'', --选填:排序字段列表,以逗号分隔
    @PageIndex int = 1,                     --选填:显示的页码,默认值为 1
    @PageSize int = 10,                     --选填:显示的页面大小,默认值为 10
    @TotalPage int OUTPUT
)
AS
BEGIN
    SET NOCOUNT ON;
    -- ******************参数检查及处理:开始******************
    -- 表名
    IF OBJECT_ID(@TblName) IS NULL
        BEGIN
            RAISERROR(N'对象"%s"不存在',1,16,@TblName)
            RETURN
        END
    IF OBJECTPROPERTY(OBJECT_ID(@TblName),N'IsTable')=0
        AND OBJECTPROPERTY(OBJECT_ID(@TblName),N'IsView')=0
        AND OBJECTPROPERTY(OBJECT_ID(@TblName),N'IsTableFunction')=0
        BEGIN
            RAISERROR(N'"%s"不是表、视图或者表值函数',1,16,@TblName)
            RETURN
    END
    -- 主键字段
    IF ISNULL(@Pkey,N'')=''
        BEGIN
            RAISERROR(N'分页处理需要主键或唯一键(数值类型)',1,16)
            RETURN
        END
    -- 显示字段
    IF ISNULL(@FieldText,N'')=N'' 
        SET @FieldText=N'*'
    -- Where 条件句
    IF ISNULL(@WhereText,N'') != N''
        SET @WhereText = N' AND ' + @WhereText + N' '
    -- 排序语句
    IF ISNULL(@OrderField,N'') != N''
        SET @OrderField = N' ORDER BY ' + @OrderField + N' '
    -- 页码
    IF ISNULL(@PageIndex,0)<1 
        SET @PageIndex=1
    -- 页大小
    IF ISNULL(@PageSize,0)<1 
        SET @PageSize=10
    -- ******************参数检查及处理:结束******************
    
    -- 计算总页数