设为首页 加入收藏

TOP

SQL存储过程将符合条件的大量记录批量删除脚本
2015-11-21 02:10:00 来源: 作者: 【 】 浏览:4
Tags:SQL 存储 过程 符合 条件 大量 记录 批量 删除 脚本
-- =============================================
-- Author:  James Fu
-- Create date: 2015/10/27
-- Description: v0.1    利用批量的方式删除符合条件的数据
-- =============================================
CREATE PROCEDURE [dbo].[sp_LargeDelete]
    @TableName sysname,
    @MaxRows int = 100000,
    @Filter nvarchar(512) = ''
AS
BEGIN
    SET NOCOUNT ON;
 
    DECLARE @SQL nvarchar(512)


    BEGIN TRY
        IF ( @Filter = '' OR @Filter is null )
        BEGIN
            SET @SQL = 'TRUNCATE TABLE '+@TableName ;
            exec sp_executesql @SQL
        END
        ELSE
        BEGIN
            DECLARE @Count INT = -1
            SET @SQL = 'DELETE TOP ('+CAST(@MaxRows AS varchar) + ') FROM  ' + @TableName + ' WHERE ' + @Filter + ' OPTION ( MAXDOP 1 )' ;
            WHILE @Count <> 0
            BEGIN
                BEGIN TRAN
                exec sp_executesql @SQL
                SET @Count = @@ROWCOUNT
                COMMIT
            END
        END
    END TRY
    BEGIN CATCH
        PRINT ERROR_MESSAGE()
        IF @@TRANCOUNT > 0
        ROLLBACK
    END CATCH
END

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySQL主从同步读写分离的集群配置 下一篇史上最全的MSSQL复习笔记

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: