mg4377娱乐娱城官网_mg4377娱乐手机版_www.mg4377.com

当前位置: mg4377娱乐娱城官网 > mg > 正文

通用分页存款和储蓄进程,创设通用存款和储蓄

时间:2019-11-30 23:37来源:mg
if exists(select * from sys.objects where name='存储进度名称'卡塔尔 drop proc 存款和储蓄进度名称 go CREATE proc 存款和储蓄进度名称 @tableName varchar(8000),          --表名、视图名 @indexCol varchar

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

以此只要固守给定参数就足以兑现分页效果,可是一遍回到笔数是有调用者分明

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

  1. 得以落成简单的数据库编制程序
  2. 福衢寿车通用的删减效能
  3. 兑现通用的更换作用

正文版权归小编meil转发请证明出处 

图片 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卡塔尔(英语:State of Qatar),            ---key值欄位名
10图片 12@ReturnFieldName varchar(300卡塔尔,        ---再次来到欄位名会集
11图片 13@Condition Varchar(1000卡塔尔,            ---條件集结
12图片 14@Order varchar(1000卡塔尔国,            ---排序会集
13图片 15@RecordNum int,                 ---重临生龙活虎頁的記錄數
14图片 16@StartNO int,                ---開始記錄數
15图片 17@@RealNum INT OUTPUT,             ---真實意气风发頁重临筆數
16图片 18@@TotalCount INT OUTPUT  卡塔尔        ---總共筆數
17图片 19AS
18图片 20
19图片 21DECLARE @PreRecCount VARCHALX570( 10 卡塔尔(英语:State of Qatar)    ---上次的筆數
20图片 22DECLARE @CurRecCount VARCHACRUISER( 10 卡塔尔(قطر‎    ---當前的筆數
21图片 23
22图片 24
23图片 25declare @ReturnTotal int     ---回傳的總筆數             
24图片 26DECLARE @SQLStr NVARCHAPRADO(500卡塔尔国            ---回傳總筆數的SQL語句
25图片 27set @SQLStr=N'SELECT @ReturnTotal=COUNT(*卡塔尔 FROM '        ---因為這個參數要求回傳所以處理不生机勃勃樣,前面一个把變量寫在SQL語句中
26图片 28set @SQLStr=@SQLStr  @TableName  ' WHERE 1=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

  • 通用删除和通用修正 完成思路

        这是本人项目中利用的三个分页存款和储蓄进程,具备很强的通用性。同盟前台ASP.NET使用50万条数据基本感不到延迟。数据库为SQLServer二零零四。

  • ' 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

    如若要得以实现通用的删减作用,只须求编写制定贰个储存进度,传入要去除的表名和删除的基准就可以,拼接一个sql语句,最终试行那些sql语句,达成通用的删除效能

 @str_sql           varchar(1000) = '*',     -- 执行的SQL 不含Order by 内容  
 @str_order田野(field卡塔尔(قطر‎    varchar(255卡塔尔国='''',       -- 排序的字段名 
 @page_size         int = 10,                     -- 页大小 
 @page_index        int = 0,                      -- 页码
 @order_type        int,                           -- 设置排序类型, 非 -1 值则降序 
 @total_count       int   output                 -- 重返记录总量, 非 0 值则赶回 
as

编辑:mg 本文来源:通用分页存款和储蓄进程,创设通用存款和储蓄

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