[SQL] Sql Server分页存储过程 →→→→→进入此内容的聊天室

来自 , 2020-12-17, 写在 SQL, 查看 101 次.
URL http://www.code666.cn/view/83a100ec
  1. /*
  2.   函数名称: GetRecordFromPage
  3.   函数功能: 获取指定页的数据
  4.   参数说明: @tblName      包含数据的表名
  5.            @fldName      关键字段名
  6.            @PageSize     每页记录数
  7.            @PageIndex    要获取的页码
  8.            @OrderType    排序类型, 0 - 升序, 1 - 降序
  9.            @strWhere     查询条件 (注意: 不要加 where)
  10. */
  11. CREATE PROCEDURE GetRecordFromPage
  12.     @tblName      VARCHAR(255),       -- 表名
  13.     @fldName      VARCHAR(255),       -- 字段名
  14.     @PageSize     INT = 10,           -- 页尺寸
  15.     @PageIndex    INT = 1,            -- 页码
  16.     @OrderType    bit = 0,            -- 设置排序类型, 非 0 值则降序
  17.     @strWhere     VARCHAR(2000) = ''  -- 查询条件 (注意: 不要加 where)
  18. AS
  19.  
  20. DECLARE @strSQL   VARCHAR(6000)       -- 主语句
  21. DECLARE @strTmp   VARCHAR(1000)       -- 临时变量
  22. DECLARE @strOrder VARCHAR(500)        -- 排序类型
  23.  
  24. IF @OrderType != 0
  25. BEGIN
  26.     SET @strTmp = '<(select min'
  27.     SET @strOrder = ' order by [' + @fldName + '] desc'
  28. END
  29. ELSE
  30. BEGIN
  31.     SET @strTmp = '>(select max'
  32.     SET @strOrder = ' order by [' + @fldName +'] asc'
  33. END
  34.  
  35. SET @strSQL = 'select top ' + str(@PageSize) + ' * from ['
  36.     + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
  37.     + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
  38.     + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
  39.     + @strOrder
  40.  
  41. IF @strWhere != ''
  42.     SET @strSQL = 'select top ' + str(@PageSize) + ' * from ['
  43.         + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
  44.         + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
  45.         + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
  46.         + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
  47.  
  48. IF @PageIndex = 1
  49. BEGIN
  50.     SET @strTmp = ''
  51.     IF @strWhere != ''
  52.         SET @strTmp = ' where (' + @strWhere + ')'
  53.  
  54.     SET @strSQL = 'select top ' + str(@PageSize) + ' * from ['
  55.         + @tblName + ']' + @strTmp + ' ' + @strOrder
  56. END
  57.  
  58. EXEC (@strSQL)
  59.  
  60. GO
  61.  
  62. //SQL/827

回复 "Sql Server分页存储过程"

这儿你可以回复上面这条便签

captcha