资讯专栏INFORMATION COLUMN

【SqlServer】清除过期数据的存储过程

mikasa / 3046人阅读

摘要:通过存储过程清除过期的数据,减少无用数据。计算出要清理的日期表名等执行清理操作主要的技术点是计算出要清理的日期。可以用语法参考程序如下要清除的月份的,格式如果为,则清除个月之前的数据清理个月之前的如月就清理去年月的删除列表

通过存储过程清除过期的数据,减少无用数据。

计算出要清理的日期、表名等

执行清理操作

主要的技术点是:

计算出要清理的日期。可以用dateadd函数计算

执行动态的sql语句。可以用EXEC (@sql)语法

参考程序如下

CREATE PROCEDURE [dbo].[cleanData]
    -- 要清除的月份的,格式: 201901
    -- 如果为NULL,则清除12个月之前的数据
    @pYearMonth varchar(6)
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @TableName NVARCHAR(50),@Sql NVARCHAR(MAX), @Month NVARCHAR(8);

    -- 清理12个月之前的,如11月,就清理去年10月的
    Select @Month=CONVERT(varchar(6),dateadd(month, -13, getdate()), 112);

    if @pYearMonth IS NOT NULL
      set @Month=@pYearMonth;
    -- Insert statements for procedure here



    -- 删除列表
    DELETE FROM [dbo].[gstrade_bill_summary] where type="m" and
      (
      CONCAT(CONVERT(varchar(10), [year]),CONVERT( varchar(10),[sno]))=@Month or
      CONCAT(CONVERT(varchar(10), [year]),"0",CONVERT( varchar(10),[sno]))=@Month
      );

    SET @TableName = CONCAT("aa_info_m_", @Month);
    SET @sql = ("drop table "+QUOTENAME(@TableName));
    IF OBJECT_ID (@TableName, N"U") IS NOT NULL
       EXEC (@sql) else select "no table "+@TableName as msg;

    SET @TableName = CONCAT("bb_m_", @Month);
    SET @sql = ("drop table "+QUOTENAME(@TableName));
    IF OBJECT_ID (@TableName, N"U") IS NOT NULL
       EXEC (@sql) else select "no table "+@TableName as msg;

    SET @TableName = CONCAT("dd_m_", @Month);
    SET @sql = ("drop table "+QUOTENAME(@TableName));
    IF OBJECT_ID (@TableName, N"U") IS NOT NULL
       EXEC (@sql) else select "no table "+@TableName as msg;

END

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32348.html

相关文章

  • SqlServer和mysql几个不同之处(主要是存储过程语法)

    摘要:中的类型对应的中用获取数据库系统当前时间中获取数据库系统当前时间中转型需要用,不需要用存储过程中循环中退出需要用,用 1.SqlServer中的类型bit(1)对应MySQL的tinyint(1) 2.SqlServer中用getdate()获取数据库系统当前时间;MySQL中NOW()获取数据库系统当前时间 3.SqlServer中转型需要用cast,mysql不需要用cast; 4...

    mdluo 评论0 收藏0
  • 一款在线ER模型设计工具,支持MySQL、SQLServer、Oracle、Postgresql s

    摘要:给大家介绍一款在线模型生成的工具,可以针对多种数据库的文件在线生成模型图表,支持等数据库。 给大家介绍一款在线ER模型生成的工具,可以针对多种数据库的DDL文件在线生成ER模型图表,支持MySQL、SQLServer、Oracle、PostgreSQL等数据库。主要功能如下: 支持表的创建,同时可以根据数据库的类型不同编辑表结构、字段类型、主键、默认值、索引、备注信息等等 支持视图,...

    魏宪会 评论0 收藏0
  • 关于前端设置过期时间

    摘要:前言开发过程少不了会遇到给某个状态设置过期时间的需求例如进入页面有个默认弹窗用户关闭之后在小时之内再次打开不能再弹面对这样需求我们首先想到的是需要设置一个变量去控制弹窗的隐藏因为默认是开启的如何去保证这个变量的有效时间呢这里就涉及到数据的持 前言 开发过程少不了会遇到给某个状态设置过期时间的需求,例如:进入页面有个默认弹窗,用户关闭之后在 1 小时之内再次打开不能再弹; 面对这样需求我...

    UnixAgain 评论0 收藏0
  • sqlserver2005 存储过程模板及调用

    摘要:本模板主要提供快速创建一个存储过程本例子中包含循环游标,事务数据库名称脚本日期用户存储过程名称开始循环游标变量成功失败成功失败计划在审批失败如何调用的语句例子用户存储过程名称 本模板主要提供快速创建一个存储过程 本例子中包含:循环游标,事务 USE [数据库名称] GO /****** 脚本日期: 11/25/2014 01:05:48 ******/ SET ANSI_NULL...

    sarva 评论0 收藏0
  • SQLServer2005 高校教学语句

    摘要:高校入门教学系列语句基础查询学生中选修课程号为的学生姓名查询选修了全部课程的学生姓名左值链接,外链接建立唯一性索引代表着选择条件修改数据表字段类型添加数据表列模糊精确条件查询课程名中含有的课程名建立存 SQLServer2005 高校入门教学系列 SQL 语句基础 --查询学生中选修课程号 为1 的学生姓名 select sname from student where exist...

    KevinYan 评论0 收藏0

发表评论

0条评论

mikasa

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<