zoukankan      html  css  js  c++  java
  • 1、SQL可搜索可排序可分页存储过程, 2、范围内的随机时间 适用于sql 2008以上

    -- =============================================
    -- Author:        蜘蛛王
    -- Create date: 2015-10-29
    -- Description:    可搜索 可排序 可分页存储过程 适用于sql2008以上 
    --       (非常重要,请认真使用)
    -- =============================================
    
    create PROCEDURE dbo.list 
        ( 
            @table varchar(1000),--表名或视图表        (必须)
            @orderby varchar(1000),--排序字段          (必须)
            @fields varchar(max)='*',--欲选择字段列表  (可选)
            @pageindex int=1,--页号,从1开始               (可选)
            @pagesize int=20,--页尺寸                   (可选)
            @where nvarchar(max) = N'',--条件           (可选) 
            @IsCount bit = 1 -- 返回记录总数, 非 0 值则返回 (可选)
        ) 
    AS
    BEGIN
        SET NOCOUNT ON
        declare @sqlstr nvarchar(max)
        set @sqlstr=''
        set @orderby = ' order by ' + @orderby
        if @where<>N''
            set @where = ' Where ' + @where
        
        --对第一页可以直接用top
        if @pageindex=1
        begin
            set @sqlstr = 'select top ' + CONVERT(varchar(10),@pagesize) + ' ' + @fields + ' from ' + @table + @where + @orderby
        end
        else
        begin
            set @sqlstr = 'with temptbl as ('
            + ' SELECT ROW_NUMBER() OVER ('+ @orderby +') AS Row, '
            + @fields + ' from ' + @table + @where
            + ') SELECT '+ @fields + ' FROM temptbl where Row between ' + CONVERT(varchar(10),(@pageindex-1)*@pagesize+1) + ' and ' + CONVERT(varchar(10),(@pageindex-1)*@pagesize+@pagesize)
            
        end
        if @IsCount!=0
            set @sqlstr = @sqlstr + ';select count(1) from ' + @table + @where
        execute(@sqlstr)
    END
     


    --测试代码
    exec list @table='dl_QQ',@orderby='iid desc',@IsCount=1, @pageindex =2, @fields='iid,qq', @where=' iid <30 '
    exec list @table='dl_QQ',@orderby='iid desc',@IsCount=1, @pageindex =1, @fields='iid,qq', @where=' iid <30 '
    /******************************
    *    函数名:RandDateTime
    *      作用:返回两个时间范围内的一个随机时间
    *    Author: 
    *      Date: 2015-11-13
    *      调用:select dbo.RandDateTime(NEWID(),'2015-11-03 11:24:17','2015-11-03 11:25:17')
    *******************************/
    go
    --创建函数
    alter Function RandDateTime
    (
        @newID uniqueidentifier, -- 用 NEWID()
        @date_from DateTime,    --开始时间
        @date_to DateTime       --结束时间
    )
    Returns DateTime
    As
    Begin
              
        Return CAST(CAST(@date_from AS DECIMAL(18,8)) + -----开始时间 加上一个以天为整的数值作为新的日期
      (   
      ABS(
      CAST(
      CAST( @newID AS Binary(17) )--把生成的一个二进制随机数转化为整数 并取其绝对值
      AS INT
      )
      ) / 10000.0  
      % ----防止随机数过大 取其对开始结束时间差的模
      CAST(
      (@date_to - @date_from) -----获取时间差 并转换成整型
      AS DECIMAL(18,8)
      )
      ) AS DATETIME)
    End
     
  • 相关阅读:
    spring子模块----->Spring Security------->相关教程(参考资料)
    Maven--->学习心得--->maven 概述
    Spring和Spring MVC 、Spring Security的关系
    leapMotion简介
    软件工程需求分析
    大型web网站-----系统架构
    Maven的安装与配置
    A Java Exception occured 解决
    mysql-5.7.20安装和配置
    线段树 poj 3667
  • 原文地址:https://www.cnblogs.com/chengulv/p/4921479.html
Copyright © 2011-2022 走看看