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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
| -- 21/07/2005 (séparation entre tma et spot tma)
-- B0_T_SPOT_TMA_UPDATE
-- @idTMA : identifiant base de données du TMA concerné
-- @idSpotTMA : identifiant base de données du spot tma concerné par la modification
-- @x : position du spot sur l'abscisse du TMA
-- @y : position du spot sur l'ordonnée du TMA
-- @idUserUpdate : identifiant base de données de l'utilisateur à l'origine de la saisie
-- @retour : identifiant généré
-- @message : message d'erreur
-- Procédure qui permet de modifier un spot de TMA
CREATE PROCEDURE DBO.B0_T_SPOT_TMA_UPDATE
(
@idTMA INT,
@idSpotTMA INT,
@x VARCHAR(2),
@y VARCHAR(2),
@idUserUpdate INT,
@retour INT OUTPUT,
@message VARCHAR(255) OUTPUT
)
AS
DECLARE @verif BIT
DECLARE @nb_verif INT
DECLARE @bloc_verif INT
DECLARE VerifXY CURSOR FOR
SELECT x_tma, y_tma
FROM T_SPOT_TMA
WHERE id_tma = @idTMA
DECLARE @verifX VARCHAR(2)
DECLARE @verifY VARCHAR(2)
BEGIN
SET @verif = 1
SET @message = ''
-- on vérifie que l'identifiant base de données du tma existe bien
IF NOT EXISTS (SELECT * FROM T_TMA WHERE id_tma = @idTMA)
BEGIN
SET @verif = 0
SET @message = @message + 'Le TMA est inexistant.<br/>'
END
-- on vérifie que l'identifiant base de données du spot tma existe bien
IF NOT EXISTS (SELECT * FROM T_SPOT_TMA WHERE id_spot_tma = @idSpotTMA)
BEGIN
SET @verif = 0
SET @message = @message + 'Le spot est inexistant.<br/>'
END
-- on vérifie le nombre de spots par référence et par bloc donneur
SET @bloc_verif = (SELECT id_bloc FROM T_TECHNIQUE WHERE id_tech = (SELECT id_technique FROM T_SPOT_TMA WHERE id_spot_tma = @idSpotTMA))
SET @nb_verif = (SELECT count(id_spot_tma) FROM T_SPOT_TMA WHERE id_tma = @idTMA AND id_technique IN (SELECT id_tech FROM T_TECHNIQUE WHERE id_bloc = @bloc_verif))
IF @nb_verif >= 3
BEGIN
SET @message = @message + 'Il existe déjà au moins 3 spots provenant de ce bloc donneur sur ce TMA.<br/>'
END
-- on vérifie que l'identifiant base de données de l'utilisateur existe bien
IF NOT EXISTS (SELECT * FROM T_User WHERE id_user = @idUserUpdate)
BEGIN
SET @verif = 0
SET @message = @message + 'Utilisateur inconnu.<br/>'
END
-- on vérifie que la position n'est pas déjà prise sur le bloc receveur
SET @verifX = (SELECT x_tma FROM T_SPOT_TMA WHERE id_spot_tma = @idSpotTMA)
SET @verifY = (SELECT y_tma FROM T_SPOT_TMA WHERE id_spot_tma = @idSpotTMA)
IF @verifX <> @x OR @verifY <> @y
BEGIN
OPEN VerifXY
FETCH NEXT FROM VerifXY INTO @verifX, @verifY
WHILE @@FETCH_STATUS = 0
BEGIN
IF @x = @verifX AND @y = @verifY
BEGIN
SET @verif = 0
SET @message = @message + 'Position sur le TMA déjà utilisée.<br/>'
END
FETCH NEXT FROM VerifXY INTO @verifX, @verifY
END
CLOSE VerifXY
DEALLOCATE VerifXY
END
IF @verif = 1
BEGIN
-- modification du spot de TMA
UPDATE T_SPOT_TMA
SET
id_tma = @idTMA,
x_tma = @x,
y_tma = @y,
id_user_update = @idUserUpdate,
dt_login_update = getDate()
WHERE id_spot_tma = @idSpotTMA
SET @retour = 1
SET @message = @message + 'Modification bien effectuée.<br/>'
END
ELSE
BEGIN
SET @retour = -1
END
END
GO |
Partager