⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4数据库存储过程代码--高效分页存储过程.txt

📁 oracle数据库技术oracle数据库技术oracle数据库技术oracle数据库技术oracle数据库技术oracle数据库技术oracle数据库技术
💻 TXT
字号:
通用数据库存储过程代码--高效分页存储过程

TheEdge推荐 [2007-6-6]
出处:来自网上
作者:不详
 



-- 获取指定页的数据 
Create PROCEDURE pagination
 @tblName varchar(255), -- 表名 
 @strGetFields varchar(1000) = '*', -- 需要返回的列 
 @fldName varchar(255)='', -- 排序的字段名 
 @PageSize int = 10, -- 页尺寸 
 @PageIndex int = 1, -- 页码 
 @doCount bit = 0, -- 返回记录总数, 非 0 值则返回 
 @OrderType bit = 0, -- 设置排序类型, 非 0 值则降序 
 @strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where) 
AS 

declare @strSQL varchar(5000) -- 主语句 
declare @strTmp varchar(110) -- 临时变量 
declare @strOrder varchar(400) -- 排序类型 
if @doCount != 0 
 begin 
  if @strWhere !='' 
   set @strSQL = "select count(*) as Total from [" + @tblName + "] where "+@strWhere 
  else 
   set @strSQL = "select count(*) as Total from [" + @tblName + "]" 
 end 
 --以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况 

else 
 begin 
  if @OrderType != 0 
   begin 
    set @strTmp = "<(select min" 
    set @strOrder = " order by [" + @fldName +"] desc" 
    --如果@OrderType不是0,就执行降序,这句很重要! 
   end 
  
  else 
   begin 
    set @strTmp = ">(select max" 
    set @strOrder = " order by [" + @fldName +"] asc" 
   end 
   if @PageIndex = 1 
    begin 
     if @strWhere != '' 
      set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from [" + @tblName + "] where " + @strWhere + " " + @strOrder 
     else 
      set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from ["+ @tblName + "] "+ @strOrder 
      --如果是第一页就执行以上代码,这样会加快执行速度 
    end 
   else 
    begin 
     --以下代码赋予了@strSQL以真正执行的SQL代码 
     set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from [" 
      + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["+ @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"+ @strOrder 
      if @strWhere != '' 
     set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from [" 
      + @tblName + "] where [" + @fldName + "]" + @strTmp + "([" 
      + @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " [" 
      + @fldName + "] from [" + @tblName + "] where " + @strWhere + " " 
      + @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder 
 end 
end 


exec (@strSQL)
GO

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -