• 一个同事提供的通用存储过程(标记学习)


    View Code
     1 /************************************************************
     2  * Code  by se7en
     3  * Time: 2013/3/22 14:23:29
     4  ************************************************************/
     5 
     6 USE [HLT_HIEP_V2]
     7 GO
     8 /****** Object:  StoredProcedure [dbo].[Paging]    Script Date: 03/22/2013 14:23:17 ******/
     9 SET ANSI_NULLS ON
    10 GO
    11 
    12 SET QUOTED_IDENTIFIER ON
    13 GO
    14 
    15 ALTER PROCEDURE [dbo].[Paging] --创建分页数据集 Table[0]:记录总数和总页数, Table[1]:当前页
    16     @pagesize INT, -- 指定分页大小
    17     @pagenum INT, -- 指定当前页
    18     @key VARCHAR(50), -- 查询主键
    19     @fields VARCHAR(1024), --指定除了主键和外其它需要输出的字段
    20     @joins VARCHAR(2048), --联合数据源
    21     @filter VARCHAR(4096), --查询条件
    22     @order VARCHAR(1000) --排序规则
    23 AS
    24     DECLARE @sql1  VARCHAR(4096)
    25     DECLARE @sql2  VARCHAR(4096)
    26     DECLARE @sql3  VARCHAR(4096)
    27     SET @sql1 = 'select identity(int, 1, 1) as seqId, convert(varchar(200), ' +
    28         @key + ') as pkey into #tmp from ' + @joins + ' where ' + @filter +
    29         ' order by ' + @order
    30     
    31     SET @sql2 = 'select @@rowcount as 记录总数, ceiling(@@rowcount*1.0 / ' +
    32         CONVERT(VARCHAR(10), @pagesize) + ') as 总页数'
    33     
    34     SET @sql3 = 'select ' + @key + ' as 主键,  #tmp.seqid as 序号, ' + @fields +
    35         ' from ' + @joins + ' inner join #tmp on ' + @key + ' = #tmp.pkey ' +
    36         ' where ' + @filter + ' and #tmp.seqid between ' + CONVERT(VARCHAR(10), (@pagenum -1) * @pagesize + 1) 
    37         + ' and ' + CONVERT(VARCHAR(10), @pagenum * @pagesize) +
    38         ' order by #tmp.seqid'
    39     
    40     EXEC (@sql1 + ';' + @sql2 + ';' + @sql3)
    41     PRINT @sql1

    个人感觉还是有可以改进的地方 ,但是因为领导要的急 ,所以就拿过来用了。可用性还是很高的 。

  • 相关阅读:
    [转]C#获取文件的MD5值
    跨域ajax返回
    根据子表的条件修改主表的数据
    网络与多线程的设计例子
    网络与多线程的设计模式
    tcpdump移植和使用 -- by Johnson
    关于程序的歪门邪说--by Johnson
    重装系统——联想window 10
    Qt项目中error: C2001: newline in constant错误的解决
    使用NSIS制作Windows安装程序快速入门
  • 原文地址:https://www.cnblogs.com/lelese7en/p/2975519.html
Copyright © 2020-2023  润新知