1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
   | ------------------------------------------------------------------------------------------------------------
--  TITRE :  		PB_01_MAJ_USER_DATA
------------------------------------------------------------------------------------------------------------
--  DT CREATION :	19 MAI 2008
--  AUTEUR :		HODAWA
--  OBJECTIF : 		Mise à jour des données utilisateur en cas 
--			d'échec de l'importation des données de 
--			TERADATA
------------------------------------------------------------------------------------------------------------
 
CREATE PROCEDURE PB_01_MAJ_USER_DATA AS 
 
DECLARE
 
	@Nb_Row int
 
	BEGIN
 
		-- Etape 00 : Déconnexion des USERs
		UPDATE TABLE1 set C1= 'V'
 
		INSERT INTO TABLE1 ( C1, C2, C3) 
		SELECT 1, getdate(), 1 
 
		-- Etape 01 : Suppression de la table TABLE2
		TRUNCATE TABLE TABLE2
 
		-- Etape 02 : Suppression des Indexes de la table TABLE2
		IF EXISTS (SELECT name FROM sysindexes WHERE name = 'TABLE2_IDX1')
		   DROP INDEX TABLE2.TABLE2_IDX1
		IF EXISTS (SELECT name FROM sysindexes WHERE name = 'TABLE2_IDX2')
		   DROP INDEX TABLE2.TABLE2_IDX2
		IF EXISTS (SELECT name FROM sysindexes WHERE name = 'TABLE2_IDX3')
		   DROP INDEX TABLE2.TABLE2_IDX3
		IF EXISTS (SELECT name FROM sysindexes WHERE name = 'TABLE2_IDX4')
		   DROP INDEX TABLE2.TABLE2_IDX4
 
		-- Etape 03 : Insertion des datas dans la table de travail (environ 13 min pour 3 600 000 lignes)
		INSERT INTO [DATABASE1].[dbo].[TABLE2]([C1],..., [Cn])
		SELECT [C1], ..., [Cn]
		FROM [DATABASE1].[dbo].[TABLE3]
 
		-- Etape 04 : Reconstruction des Indexes de la table TABLE2
		CREATE INDEX TABLE2_IDX1 ON TABLE2(C2, C3, C4) ON [INDEX_ATE_LARGE_F001]
		CREATE INDEX TABLE2_IDX2 ON TABLE2(C5) ON [INDEX_ATE_LARGE_F001]
		CREATE INDEX TABLE2_IDX3 ON TABLE2(C6) ON [INDEX_ATE_LARGE_F001]
		CREATE INDEX TABLE2_IDX4 ON TABLE2(C7) ON [INDEX_ATE_LARGE_F001]
 
		--Etape 05 :  Chargement de la variable @row avec le nombre d'enregistrement chargés dans TABLE2
		SELECT	         @Nb_Row =  count(*) 
		FROM		TABLE2
 
		-- Etape 06 : Mise à jour de la table TABLE1 avec le nombre d'enregistrement chargés dans TABLE2 et 
		-- l'indicateur de chargement en cours à  0 (C2).
		UPDATE	       TABLE1
		SET		nbenr = @Nb_Row , C2=0
		WHERE	       C1= '1'
 
		-- Etape 07 : Suppression des datas dans la table de travail
		-- cette étape doit ce faire seulement si les lignes sont insérées dans ACLTOL
		TRUNCATE TABLE	TABLE3
 
	END
GO  |