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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
-- code de EXEC dbo.ProZoneForcerMouvement
ALTER PROCEDURE [dbo].[PROZoneForcerMouvement]
@NumZoneDepart INT
, @NumZoneArrivee INT
, @Mode INT = 1
, @NomApplication VARCHAR(50)=''
, @NomUtl VARCHAR(50)=''
, @NomPst VARCHAR(50)=''
AS
BEGIN
-- Variables pour les messages
DECLARE @Procedure VARCHAR(50) -- Nom de la procedure
DECLARE @Message VARCHAR(250) -- Message
-- Infos zone depart
DECLARE @LigneDepart INT
DECLARE @LigneArrivee INT
DECLARE @ColonneDepart INT
DECLARE @ColonneArrivee INT
DECLARE @NbrBarres INT
Declare @Position varchar(50)
DECLARE @IdtBar INT
DECLARE @Retour INT
DECLARE @Err INT
DECLARE @TranName VARCHAR(20)
DECLARE @NumSeq int
SELECT @TranName = 'Transaction'
-- Initialise le nom de la procédure
SET @Procedure = 'PROZoneForcerMouvement'
SET @Message = 'Forçage déplacement mode(' + ISNULL( CAST(@Mode AS VARCHAR), 'NULLE') + ')'
+ ' de la zone n°' + ISNULL( CAST(@NumZoneDepart AS VARCHAR), 'NULLE')
+ ' vers la zone n°' + ISNULL( CAST(@NumZoneArrivee AS VARCHAR), 'NULLE')
+ '.'
EXEC BDRAPP.dbo.PROEcrJdb @Procedure, @Message, 2 -- <= 3 : Message, >3 : Erreur
----ICI: Lorsque le problème survient, meme après rollback, les traces demeurent et se sont arrêtées ici.
SET @ColonneArrivee=-1
IF (@NumZoneArrivee=9)
BEGIN
SET @ColonneArrivee=0
END
-------------------------------------------------------------------
-- On recupere la ligne de la zone de départ et le nombre de barres
-------------------------------------------------------------------
EXEC PROZoneLigneProchaine @NumZoneDepart, @LigneDepart output, @NbrBarres output
----------------------------------------------
-- Une seule barre
----------------------------------------------
IF (@NbrBarres = 1)
BEGIN
if (@NumZoneArrivee=3) or (@NumZoneArrivee=4) or (@NumZoneArrivee=6) or (@NumZoneArrivee=7) or (@NumZoneArrivee=8)
BEGIN
SET @ColonneArrivee=0
END
BEGIN TRANSACTION @TranName -- On sécurise la transaction
--------------------------------------------------------------
SELECT @IdtBar = IdtBarFil FROM TabPosBar WHERE NumZon = @NumZoneDepart AND LigBar = @LigneDepart
-- On supprime la barre de la zone d'origine
exec PROBarreZoneSupprimer @NumZoneDepart , @IdtBar
-- On insere la barre dans la zone destination en automatique
exec probarrezoneAjouter @IdtBar,@NumZoneArrivee,-1,@ColonneArrivee,@Err output
-- Si la zone destination est , on affecte le numéro de séquence.
if (@NumZoneArrivee=8)
BEGIN
Exec PRONUMSEQ 1, @NumSeq output
-- On remet à jour les n° de sequence des barres concernées.
Update TabBarFil
set NumSeq=@NumSeq
where IdtBarFil=@IdtBar
END
COMMIT TRANSACTION @TranName
--
END
---------------------------------------------------------
-- on retourne 0 pour indiquer que le deplacement est OK.
---------------------------------------------------------
RETURN 0
END |