daxtaz | mareek a écrit :
Tu es sur quel SGBD ? Elles font quoi tes requêtes ? tu peux poster le code de ta procedure stockée ?
|
voili voilo, le code
je rappel tt de meme que partie par partie la requete s'effectue nickel en 40 s, le probleme c'est que quand je la lance d'une traite telle que vs la voyer ds le code, je ne sais pas si elle se termine mais je l'ai laisser deroulée 8 minutes ????
merci.
Code :
- --************************* MAJ TABLE Tickets_en_Erreur ******************************
- --Remplit la table Tickets_en_Erreur et rajoute un champs "Status" mis a 0
- insert into Tickets_en_Erreur select Type_Dappel, Numero_De_Ticket, Point_Sémaphore, A_Number, B_Number, Location_Code, Cause_Code, La_date, Heure_Duree, A_CA__A_TO__A_NP__A_TY__B_TO__B_NP, Incoming_Route, Outgoing_Route, OM, Fichier, Talert, TRelease, B_number_T, Circuits, 0
- from le_04_04_27_tickets a Join Numéros_EE b
- on a.B_Number = b.Numéros
- Join Points_Semaphores p
- on a.Point_Sémaphore = P.ps
- where(( a.cause_code <> 16 and b.surveillance = 'OUI' and a.cause_code <> 255 and a.cause_code <> 88 and a.cause_code <> 31 and Incoming_route in ( select entrant from Les_Routes)
- and [câblage machine] <> 'Machine de traduction') or
- ( a.cause_code <> 255 and a.cause_code <> 16 and a.cause_code <> 31 and a.cause_code <> 88 and b.surveillance = 'OUI' and Type_Dappel in ('II', 'IP') and Incoming_route in ( select entrant from Les_Routes)
- and [câblage machine] <> 'Machine de traduction'))
- --****************************** MAJ DU CHAMPS "FAUX" DE LA TABLE Stat_Tickets_en_Erreur **********************************
- create table #tmp(indice_num numeric)
- declare @service nvarchar(40), @nb_tmp int, @nb_fx int, @num numeric, @verif int
- --Etape MAJ des donnees ds la table Stat_Tickets_en_Erreur concernant les tickets en erreurs
- declare curs cursor
- for
- select count(*), b_number
- from le_04_04_27_tickets a Join Numéros_EE b
- on a.B_Number = b.Numéros
- Join Points_Semaphores p
- on a.Point_Sémaphore = P.ps
- where(( a.cause_code <> 16 and b.surveillance = 'OUI' and a.cause_code <> 255 and a.cause_code <> 88 and
- a.cause_code <> 31 and Incoming_route in ( select entrant from Les_Routes)
- and [câblage machine] <> 'Machine de traduction') or
- ( a.cause_code <> 255 and a.cause_code <> 16 and a.cause_code <> 31 and a.cause_code <> 88 and
- b.surveillance = 'OUI' and Type_Dappel in ('II', 'IP') and Incoming_route in ( select entrant from Les_Routes)
- and [câblage machine] <> 'Machine de traduction'))
- group by b_number
- order by b_number
- open curs
- fetch curs into @nb_fx, @num
- while @@fetch_status = 0
- begin
- --met de cote les numeros sur lesquels des chgt ont ete effectues
- insert into #tmp(indice_num) values(@num)
-
- --regarde si le numero est deja ds la table Statt_Tickets_en_Erreur
- select @verif = count(*) from Stat_Tickets_en_Erreur where numero = @num
- --********si le numero en cours se trouve deja ds la table
- if @verif <> 0
- begin
- --recupere le nb de tickets deja en erreur
- select @nb_tmp = Faux from Stat_Tickets_en_Erreur where numero = @num
- --ajoute les new tickets en erreur
- set @nb_tmp = @nb_tmp + @nb_fx
- --MAJ du nb de tickets
- update Stat_Tickets_en_Erreur set faux = @nb_tmp where numero = @num
- end
- --*******si le numero en cours ne se trouve pas deja ds la table
- else
- begin
- select @service = Service from Numéros_EE where Numéros = @num
-
- insert into Stat_Tickets_en_Erreur values (@num, @service, 0, @nb_fx, 0, 0)
- end
- fetch curs into @nb_fx, @num
- end
- close curs
- deallocate curs
- --*********************************** MAJ DU CHAMPS "BON" DE LA TABLE Stat_Tickets_en_Erreur ****************************
- --Etape MAJ des donnees ds la table Stat_Tickets_en_Erreur concernant les tickets en erreurs
- declare curs cursor
- for
- select count(*), b_number
- from le_04_04_27_tickets a Join Numéros_EE b
- on a.B_Number = b.Numéros
- Join Points_Semaphores p
- on a.Point_Sémaphore = P.ps
- where not (( a.cause_code <> 16 and b.surveillance = 'OUI' and a.cause_code <> 255 and a.cause_code <> 88 and
- a.cause_code <> 31 and Incoming_route in ( select entrant from Les_Routes)
- and [câblage machine] <> 'Machine de traduction') or
- ( a.cause_code <> 255 and a.cause_code <> 16 and a.cause_code <> 31 and a.cause_code <> 88 and
- b.surveillance = 'OUI' and Type_Dappel in ('II', 'IP') and Incoming_route in ( select entrant from Les_Routes)
- and [câblage machine] <> 'Machine de traduction'))
- and b_number in(select numero from Stat_Tickets_en_Erreur)
- group by b_number
- order by b_number
- open curs
- fetch curs into @nb_fx, @num
- while @@fetch_status = 0
- begin
- --verifie si le num est deja ds #tmp, sinon il faut le mettre
- select @verif = count(*) from #tmp where indice_num = @num
-
- if @verif = 0
- begin
- --met de cote les numeros sur lesquels des chgt ont ete effectues et qui ne sont pas encore ds #tmp
- insert into #tmp(indice_num) values(@num)
- end
- --recupere le nb de tickets deja bon
- select @nb_tmp = bon from Stat_Tickets_en_Erreur where numero = @num
- --ajoute les new tickets en erreur
- set @nb_tmp = @nb_tmp + @nb_fx
- --MAJ du nb de tickets
- update Stat_Tickets_en_Erreur set bon = @nb_tmp where numero = @num
- fetch curs into @nb_fx, @num
- end
- close curs
- deallocate curs
- --************************* MAJ DES CHAMPS TOTAL & TAUX DE LA TABLE Stat_Tickets_en_Erreur ******************************
- declare @faux int, @bon int
- select @verif = count(indice_num) from #tmp
- if @verif <> 0
- begin
- declare curs cursor
- for
- select indice_num
- from #tmp
- open curs
- fetch curs into @num
- while @@fetch_status = 0
- begin
- select @faux = faux, @bon = bon from Stat_Tickets_en_Erreur where numero = @num
- update Stat_Tickets_en_Erreur set total = (faux + @bon) where numero = @num
- if @faux < @bon
- begin
- update Stat_Tickets_en_Erreur set taux = ((@faux / @bon) * 100) where numero = @num
- end
- else
- begin
- update Stat_Tickets_en_Erreur set taux = 0 where numero = @num
- end
- fetch curs into @num
- end
- end
- close curs
- deallocate curs
- drop table #tmp
|
|