-- =============================================--author:james Fu--Create Date:2015/10/27--description:v0.1 to delete qualifying data in a batch manner-- =============================================CREATE PROCEDURE [dbo].[Sp_largedelete] @TableNamesysname,@MaxRows int = 100000, @Filter nvarchar( +)= "' asBEGIN SETNOCOUNT on; DECLARE @SQL nvarchar( +) BEGINTRYIF(@Filter = "' OR @Filter is NULL ) BEGIN SET @SQL = 'TRUNCATE TABLE'+@TableName ; execsp_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 execsp_executesql@SQL SET @Count = @ @ROWCOUNT COMMIT END END ENDTRYBEGINCATCHPRINTerror_message ()IF @ @TRANCOUNT > 0 ROLLBACK ENDCATCHEND
SQL stored procedures Bulk Delete scripts that meet the conditions of a large number of records