澳门新葡亰娱乐网站-www.142net-欢迎您

澳门新葡亰娱乐网站是因为你还没有找到一条正确的致富之路,www.142net是将所有的游戏都汇集在一起的官方平台,因为澳门新葡亰娱乐网站这个网站当中有着大量的游戏攻略,托IP定位技术,传达终端直接到达的精准传播方式。

通用分页存储过程,通用的分页存储过程

来源:http://www.bhtsgq.com 作者:计算机知识 人气:102 发布时间:2019-05-11
摘要:if exists(select * from sys.objects where name='存款和储蓄进程名称') drop proc 存款和储蓄进度名称 go CREATE proc 存款和储蓄进度名称 @tableName varchar(8000),          --表名、视图名 @indexCol varcha

if exists(select * from sys.objects where name='存款和储蓄进程名称')
drop proc 存款和储蓄进度名称
go
CREATE proc 存款和储蓄进度名称
@tableName varchar(8000),          --表名、视图名
@indexCol varchar(50) = 'a.id',      --标志列名(如:比方主键、标志,推荐应用索引列)
@pageSize int = 10,                --页面大小
@pageIndex int = 0,                --当前页
@orderCol varchar(100) = 'a.id desc',--排序 (如:id)
@where varchar(max) = '',         --条件
@columns varchar(500) = '*'        --要显得的列
as
declare @sql varchar(max)
declare @sql2 varchar(max)
declare @where2 varchar(max)

2006年6月14日  作者:meil  博客:meil.livebaby.cn

  • 目标

其1只要依照给定参数就足以落成分页效果,然而一次回到笔数是有调用者鲜明

if @where <> ''
begin
    select @where2 = ' And ' @where
    select @where = ' Where ' @where
end
else
    select @where2 = ''

正文版权归小编meil转载请注解出处 

  1. 达成轻便的数据库编程
  2. 贯彻通用的删除功效
  3. 福寿无疆通用的修改效能

图片 1图片 2Code
 1图片 3SET QUOTED_IDENTIFIER ON 
 2图片 4GO
 3图片 5SET ANSI_NULLS ON 
 4图片 6GO
 5图片 7
 6图片 8
 7图片 9ALTER   PROCEDURE GetRecords 
 8图片 10(@TableName varchar(15),             ---表名
 9图片 11@KeyName varchar(30),            ---key值欄位名
10图片 12通用分页存储过程,通用的分页存储过程。@ReturnFieldName varchar(300),        ---再次来到欄位名集结
11图片 13@Condition Varchar(一千),            ---條件群集
12图片 14@Order varchar(一千),            ---排序会集
13图片 15@RecordNum int,                 ---再次回到一頁的記錄數
14图片 16@StartNO int,                ---開始記錄數
15图片 17@@RealNum INT OUTPUT,             ---真實1頁再次回到筆數
16图片 18@@TotalCount INT OUTPUT  )        ---總共筆數
17图片 19AS
18图片 20
19图片 21DECLARE @PreRecCount VA奥迪Q3CHA安德拉( 十 )    ---上次的筆數
20图片 22DECLARE @CurRecCount VA奥迪Q7CHA福睿斯( 10 )    ---當前的筆數
21图片 23
22图片 24
23图片 25declare @ReturnTotal int     ---回傳的總筆數             
24图片 26DECLARE @SQLStr NVAKoleosCHA卡宴(500)            ---回傳總筆數的SQL語句
25图片 27set @SQLStr=N'SELECT @ReturnTotal=COUNT(*) FROM '        ---因為這個參數供给回傳所以處理不一樣,前者把變量寫在SQL語句中
26图片 28set @SQLStr=@SQLStr  @TableName  ' WHERE 1=一 '  @Condition    ---直接讓變量轉化為值
27图片 29exec sp_executesql @SQLStr,N'@ReturnTotal  int output',
28图片 30@ReturnTotal  output
29图片 31Set @@TotalCount=@ReturnTotal
30图片 32
31图片 33----重返該頁能够回去的真實筆數
32图片 34IF @@TotalCount > ( @StartNO   1 ) * @RecordNum
33图片 35    SET @@RealNum = @RecordNum            
34图片 36ELSE
35图片 37    SET @@RealNum = @@TotalCount - @StartNO * @RecordNum
36图片 38
37图片 39SET @CurRecCount = CAST( @StartNO * @RecordNum   @@RealNum AS VARCHAR( 10 ) )
38图片 40IF @STARTNO = 0
39图片 41   EXEC( 'SELECT TOP '   @RecordNum   @ReturnFieldName '   FROM ' @TableName ' WHERE 1=1  ' @Condition ' Order By ' @Order )
40图片 42ELSE
41图片 43   BEGIN
42图片 44    SET @PreRecCount = CAST( @StartNO * @RecordNum AS VARCHAR( 10 ) )
43图片 45    EXEC( 'SELECT TOP '   @RecordNum  '  '  @ReturnFieldName  '   FROM ' @TableName ' WHERE 1=1  ' @Condition ' AND ' @KeyName ' NOT IN  ' 
44图片 46          '(SELECT TOP '   @PreRecCount   @KeyName '  FROM  ' @TableName ' WHERE 1=1  ' @Condition ' Order By ' @Order ')'  ' Order By ' @Order) 
45图片 47   END
46图片 48
47图片 49print @PreRecCount
48图片 50print @CurRecCount
49图片 51
50图片 52GO
51图片 53SET QUOTED_IDENTIFIER OFF 
52图片 54GO
53图片 55SET ANSI_NULLS ON 
54图片 56GO
55图片 57
56图片 58

select @sql = 'Select Top ' Convert(varchar(10),@pageSize) ' ' @columns ' From ' @tableName
select @sql2 = @sql @where
select @sql =  @sql ' Where ' '(' @indexCol ' Not In (Select Top ' Convert(varchar(10),  ((@pageIndex-1)*@pageSize)) ' ' @indexCol

        那是本身项目中动用的2个分页存款和储蓄进度,具备很强的通用性。合作前台ASP.NET使用50万条数据基本感不到延迟。数据库为SQLServer3000。

  • 通用删除和通用修改 完毕思路
  • ' From ' @tableName @where   ' Order by ' @orderCol '))'
    select @sql = @sql @where2
    select @sql = @sql ' Order by ' @orderCol
    --得到数据集
    exec (@sql)
    PRINT @sql
    select @sql2 = Replace(@sql2,'Top ' Convert(varchar(10), @pageSize) ' ' @columns, 'count(1)')
    --得到总的数量据条数
    exec(@sql2)

 

  1. 平时删除成效

GO

1. 分页存款和储蓄进度(源码)

    依据有个别条件删除有些表消息,平日如:依据主键删除消息表消息某条数据,依照主键删除用户表某条数据

CREATE   procedure pagination

  分析:

 @str_sql           varchar(1000) = '*',     -- 执行的SQL 不含Order by 内容  
 @str_order田野    varchar(25五)='''',       -- 排序的字段名 
 @page_size         int = 10,                     -- 页大小 
 @page_index        int = 0,                      -- 页码
 @order_type        int,                           -- 设置排序类型, 非 -1 值则降序 
 @total_count       int   output                 -- 重临记录总的数量, 非 0 值则赶回 
as

    若是要落实通用的删除成效,只必要编写制定2个积累进程,传入要刨除的表名和删除的规则就能够,拼接三个sql语句,最后试行那么些sql语句,完成通用的删除成效

本文由澳门新葡亰发布于计算机知识,转载请注明出处:通用分页存储过程,通用的分页存储过程

关键词: 数据库 分页 存储过程 sqlserver 代码原

最火资讯