104 lines
2.7 KiB
Transact-SQL
104 lines
2.7 KiB
Transact-SQL
USE [HCITools]
|
|
GO
|
|
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Purge_Synchro_Label]') AND type in (N'P', N'PC'))
|
|
DROP PROCEDURE [dbo].[Purge_Synchro_Label]
|
|
GO
|
|
|
|
USE [HCITools]
|
|
GO
|
|
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
CREATE PROCEDURE [dbo].[Purge_Synchro_Label]
|
|
@in_debug int = null,
|
|
@in_NbMonths int = 3
|
|
AS
|
|
/*=============================================================================
|
|
|
|
Explication du traitement realise par la SP
|
|
-------------------------------------------
|
|
Cette SP sert à supprimer les labels de plus de X jours
|
|
|
|
Contexte d'utilisation
|
|
----------------------
|
|
Cette SP est appelée par le job D93100 - Purge Synchro Label
|
|
|
|
Parametres
|
|
----------
|
|
@in_debug : non utilisé
|
|
@in_NbMonths : nombre de mois glissant à conserver (3 par défaut)
|
|
|
|
|
|
Creation : 28.10.16 / FLA
|
|
|
|
Modifications :
|
|
|
|
=============================================================================*/
|
|
|
|
set nocount on;
|
|
|
|
|
|
/*------------------- Declaration des variables --------------------*/
|
|
declare @MaxDate bigint,
|
|
@Directory varchar (255),
|
|
@Path varchar(500),
|
|
@FullPath varchar(500)
|
|
|
|
/*------------ Affectation des parametres aux variables ------------*/
|
|
|
|
SET @MaxDate = CAST(CONVERT(nvarchar(30), DateAdd(mm,-@in_NbMonths,getdate()), 112)+'000000000' as bigint)
|
|
SELECT @Path = HCIP_value FROM HCITools.dbo.HCI_PARAMS WHERE HCIP_key = 'LBLPATH'
|
|
|
|
/*-------------------------- Traitement ---------------------------*/
|
|
BEGIN TRY
|
|
|
|
/* séléction de l'ensemble des répertoires commençant par 20, de format numérique et d'une taille de 17 */
|
|
declare c_Directories cursor local forward_only static for
|
|
SELECT DirectoryName FROM [dbo].[aps_Directory_Get_Directories] (@Path,'20*')
|
|
where ISNUMERIC(DirectoryName) = 1
|
|
AND LEN(DirectoryName) = 17
|
|
|
|
open c_Directories
|
|
;
|
|
FETCH NEXT FROM c_Directories
|
|
into @Directory
|
|
|
|
/* Parcour des répertoires */
|
|
while @@fetch_status = 0
|
|
begin
|
|
|
|
/* Si le répertoire est un répertoire de plus de 3 mois alors on le supprime */
|
|
IF CAST(@Directory as bigint) < @MaxDate
|
|
BEGIN
|
|
SET @FullPath = @Path + @Directory
|
|
exec dbo.aps_Directory_Delete @path = @FullPath, @recursive=1
|
|
END
|
|
|
|
FETCH NEXT FROM c_Directories
|
|
into @Directory
|
|
end
|
|
|
|
close c_Directories
|
|
deallocate c_Directories
|
|
|
|
/*---------------------- Traitement des erreurs ----------------------*/
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
/* Traitement des erreurs (avec RaiseError) */
|
|
EXEC dbo.get_Error_Info @in_RaiseError = 1
|
|
|
|
END CATCH
|
|
|
|
|
|
|
|
GO
|
|
|
|
|