>

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

- 编辑:澳门新葡亰平台游戏 -

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

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

  分析:

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

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)

 EXEC(@sql)

CREATE   procedure pagination

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

  1. 落到实处轻巧的数据库编制程序
  2. 贯彻通用的删除功效
  3. 兑现通用的改换效率

        那是自己项目中行使的二个分页存款和储蓄进度,具备很强的通用性。合营前台ASP.NET使用50万条数据基本感不到延迟。数据库为SQLServer三千。

GO

  1. 习感觉常修改:三个表就要求写贰个囤积进程去贯彻修改作用

-- 获取数据总行数 --

  declare @tmpsql nvarchar(2000)
  set @tmpsql='select @count=count(*)  from ('+ @sql +') a'

  execute sp_executesql @tmpsql,N'@count int output',@count output
 
end

GO

  • ' 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)
  • 通用删除和通用修改 实现思路

在t-sql分界面操作调用格式如下

本文版权归作者meil转载请注脚出处 

  • 通用修改功用完结思路

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

  • 目标

-- 得到钦赐页的数量--

declare @strsql   varchar(5000)              -- 主语句
declare @strtmp   varchar(伍仟)             -- 不常变量
declare @strorder varchar(400)              -- 排序字串
declare @cruRow   int                            -- 当前行号  

--实行总额总结
exec getRowCount @str_sql,@total_count output

set @strtmp =  ' select * from ' +
        '      (select top ' + convert(varchar(10),@page_size) + ' * from ' +
        '         (select top ' + convert(varchar(10),(@page_index + 1) * @page_size)  +' * from '        -- N+1页

--排序方向
if @order_type !=0
 begin
 set @strsql= @strtmp +
       '          order by @str_orderfield asc) a ' +
       '       order by @str_orderfield desc)b' +
              ' order by @str_orderfield asc'
 end
else
 begin
 set @strsql= @strtmp +
       '          order by @str_orderfield desc) a ' +
       '       order by  @str_orderfieldasc)b' +
              ' order by  @str_orderfield desc'
 end

exec (@strsql)

GO


 2. 分页存储进度(源码) 推行中用到的行数总计

create  procedure getRowCount
       @sql    nvarchar(2000),
       @count  int output
as
begin


通用删除作用如下

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

  分析:

 

EXEC [dbo].[UpdateTable] 'userinfo','age=24','id=1'
EXEC DelTable 'userinfo','id=6'
  1. 日常说来删除成效

通用查询功效如下

    依照某些条件删除某些表消息,平时如:依照主键删除消息表消息某条数据,根据主键删除客商表某条数据

通用修改功用如下

   是不是足以一贯将表名,修改的列名,修改的法规作为参数,拼接一个sql语句,最终实行那一个sql语句,达成通用的修改成效

在分界面调用如下

-- =============================================
-- Author:        <Author,,Name>
-- Create date: <2014年4月12日 23:33:39
-- Description:    通用修改
-- =============================================
CREATE PROCEDURE UpdateTable
    @tablename nvarchar(100),
    @columns nvarchar(200),
    @condition nvarchar(500)
AS
BEGIN
    DECLARE @sql nvarchar(1000)
    SET @sql='update '+@tablename+' set '+@columns+' where '+ @condition
    EXEC(@sql)
END
GO

测量检验打字与印刷sql如下
Delete from userinfo where 3

 

EXEC [dbo].[QueryTable] 'userinfo','*',''

    假如要贯彻通用的删减效能,只需求编写制定三个存款和储蓄进度,传入要去除的表名和删除的准绳就能够,拼接叁个sql语句,最终实行这么些sql语句,达成通用的删除功用

  • 执行sql语句
-- =============================================
-- Author:        <Author,,Name>
-- Create date: 2014年4月12日 23:04:30
-- Description:    <通用删除>
-- =============================================
CREATE PROCEDURE DelTable]    
    @tablename nvarchar(100),--表名
    @condition nvarchar(200)--查询条件
AS
BEGIN
--拼接sql
    DECLARE @sql nvarchar(1000)
    SET @sql='Delete from '+@tablename+' where '+@condition
    EXEC(@sql)
END

调用

-- =============================================
-- Author:        <Author,,Name>
-- Create date: 2014年4月13日 00:07:44
-- Description:    查询
-- =============================================
CREATE PROCEDURE QueryTable 
    @tablename nvarchar(100),
    @column nvarchar(200),
    @condition nvarchar(300)
AS
BEGIN
    DECLARE @sql nvarchar(1000)
    SET @sql='select '+@column+ ' from '+@tablename+' where 1=1'+@condition
    EXEC(@sql)
END
GO

本文由数据库发布,转载请注明来源:通用分页存款和储蓄进程,创造通用存款和储蓄