码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2015-10-27 17:18:09      阅读:173      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!