分页存储过程:遇到被零除错误。高手帮忙解决下。
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
-- ******************参数检查及处理:结束******************
-- 计算总页数