通用分頁存儲過程

原创 2005年05月26日 09:53:00

--saik友情提供 saikoyz@hotmail.com

/*
功能描述:對指定表中滿足條件的記錄按指定列進行分頁查詢
作    者:saiko
版    本:1.10
最后修改:2005-04-13           
調用例子:
 spoSplitPages'任何條件的SQL語句',2,10     -- 第2頁,每頁10行
EXEC spoSplitPages  '你的SQL語句','排序欄位',0 ,30, 1  -- 0: 最後一頁  30:每頁記錄數  1:降冪
*/
CREATE  procedure spoSplitPages
@SqlQuery nvarchar(4000),  --查詢字符串
@OrderFieldName  varchar(30),   --按該列為關鍵字來進行排序分頁
@CurrentPage int,  --第N頁 (如果是 0  則讀取 最后 一頁的記錄  )
@PageSize int,   --每頁行數
@OrderType    int          --排序, 0:順序,  1:  其它數字: 不進行排序 (只有此處的數字不為 0 為 1 的時候,外程序傳入的  OrderFieldName  才可以為空!)

as

DECLARE @sql nvarchar(4000), @tPageCount int

 IF @OrderType=0
   SET @sql= @SqlQuery + '  ORDER BY  '+@OrderFieldName

 IF @OrderType=1
   SET @sql =@SqlQuery + '  ORDER BY  '+@OrderFieldName + '  DESC '
    else
 SET @sql =@SqlQuery
BEGIN
      set nocount on
  declare @P1 int,--P1是游標的id
  @rowcount int
  --print  @sql
  exec sp_cursoropen @P1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
  SET  @tPageCount = ceiling(1.0*@rowcount/@PageSize)
  if @CurrentPage = 0
   set  @CurrentPage = @tPageCount  -- @PageIndex = 0 表示在調用時,是首次查詢,先讀取 最后 一頁的記錄 
  set @CurrentPage=(@CurrentPage-1)*@PageSize+1
  exec sp_cursorfetch @P1,16,@CurrentPage,@PageSize
  exec sp_cursorclose @P1

  select  @tPageCount as PagesCount ,@rowcount as RowsCount,@CurrentPage as CurrentPage 
     set nocount off
END
GO

ASP.Net 学习点滴---存储过程分页

ALTER PROCEDURE dbo.PagingPost ( @QueryWhere nvarchar(1000), @SortExpression nvarchar(50), @StartRow...
  • skxq1983
  • skxq1983
  • 2007年12月11日 10:20
  • 266

aspnet调用sqlserver分页存储过程

/// /// 获取分页的一个datatable并返回符合条件的记录的总条数 /// /// 查询的表的名称 /// 查询的字段 ...
  • qwe8254
  • qwe8254
  • 2016年06月28日 11:01
  • 110

SQL server 存儲過程的創建并使用

什么是存储过程呢? 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。  通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句。 那为什么要用存储过程呢? 1.存储过程只...
  • laizhixue
  • laizhixue
  • 2018年01月29日 11:21
  • 105

利用存儲過程分頁

USE [iDB002] GO /****** Object:  StoredProcedure [dbo].[PICM_Page]    Script Date: 05/24/2013 14:...
  • gaoqianqian5
  • gaoqianqian5
  • 2013年10月24日 15:53
  • 382

存儲過程分頁

create  procedure TurnPage(@ContainerNo varchar(16),@isFilter smallint,@PageSize int,@CurrPage int,@...
  • dnvodcwan
  • dnvodcwan
  • 2010年04月03日 08:34
  • 280

高效分頁存儲過程

 /****** 对象:  StoredProcedure [dbo].[PageList]    脚本日期: 09/05/2008 23:57:19 ******/SET ANSI_NULLS OF...
  • shaoping870
  • shaoping870
  • 2008年09月06日 12:40
  • 272

SQl2005分頁存儲過程

 -- =============================================-- 檔案名                P_Page-- Copyright(c)        ...
  • cui55
  • cui55
  • 2009年11月20日 10:35
  • 358

分頁存儲過程

CREATE PROCEDURE UP_GetRecordByPage      @tblName      varchar(255),       -- 表名      @fldName      ...
  • lv_ping
  • lv_ping
  • 2008年09月27日 12:08
  • 338

Oracle的存儲過程編程

--创建或者更新存储过程update_user_p create or replace procedure update_user_p(param1 in varchar2) is v_t...
  • u012975700
  • u012975700
  • 2016年04月19日 17:47
  • 153

存儲過程學習筆記

創建一個存儲過程的語法 CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN|OUT|IN OUT] type [,....
  • Dean_Deng
  • Dean_Deng
  • 2012年02月16日 13:36
  • 727
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通用分頁存儲過程
举报原因:
原因补充:

(最多只允许输入30个字)