首页 > 数据库技术 > 详细

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

时间:2015-10-27 17:16:00      阅读:244      评论: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 版权所有
打开技术之扣,分享程序人生!