首页 > 数据库技术 > 详细

SQL存储过程将符合条件的大量记录批量删除脚本

时间:2015-10-27 17:16:00      阅读:251      评论:0      收藏:0      [点我收藏+]
-- =============================================
-- 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

 

SQL存储过程将符合条件的大量记录批量删除脚本

原文:http://www.cnblogs.com/SparkOng/p/4914504.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!