conversion improbable SQLserver 2000
Bonjour à tous
Voilà, je travaille sur MS SQL Server 2000, et j'ai un souci sur un trigger. Il se déclenche sur l'insertion d'une salle. Le contexte grosso modo, c'est que, à la création de cette salle, et si cette salle n'est pas en travaux (booléen enTravaux), ce trigger doit également lui affecter des équipements particuliers (tables, chaises...). Pour cela, j'ai créé une table AFFECTER, qui définit quels équipements vont dans quelles types de salle, et en quelle quantité, et la table INSTALLER, qui donne, pour chaque salle, les équipements installés.
Voici le trigger :
Code:
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
| CREATE TRIGGER affect_mat
ON SALLE
FOR INSERT
AS
DECLARE
@noSalle int,
@typeSalle int,
@nbPlaces int,
@enTravaux bit,
@nbTypesMat int,
/*Variables pour le curseur*/
@codeMat int,
@nbDefault varchar(10)
BEGIN
SELECT @noSalle = noSalle, @typeSalle = typeSalle, @nbPlaces = nbPlaces, @enTravaux = enTravaux FROM inserted;
IF(@enTravaux = 0) /*On vérifie que la salle est prête à l'emploi*/
BEGIN
/*On déclare un curseur pour parcourir l'ensemble des matériels à installer*/
DECLARE curs_matAffect CURSOR FOR
SELECT codeMat, nbDefault FROM AFFECTER WHERE codeType = @typeSalle;
OPEN curs_matAffect
FETCH NEXT FROM curs_matAffect INTO @codeMat, @nbDefault
WHILE(@@FETCH_STATUS = 0)
BEGIN
IF(@nbDefault = 'nbPlaces')
BEGIN
INSERT INTO INSTALLER VALUES(@codeMat, @noSalle, @nbPlaces);
END
ELSE IF(@nbDefault = 'nbPlaces/2')
BEGIN
INSERT INTO INSTALLER VALUES(@codeMat, @noSalle, @nbPlaces / 2);
END
ELSE
BEGIN
INSERT INTO INSTALLER VALUES(@codeMat, @noSalle, CONVERT(int, @nbDefault));
END
FETCH NEXT FROM curs_matAffect INTO @codeMat, @nbDefault
END
CLOSE curs_matAffect
DEALLOCATE curs_matAffect
INSERT INTO EVENEMENT VALUES (getdate(), 'INSTALLER', 'Installation de matériel dans la salle ' + @noSalle);
END
/*Insertion dans l'historique*/
INSERT INTO EVENEMENT VALUES(getdate(), 'SALLE', 'Création de la salle ' + @noSalle);
END |
Et lors de la création d'une salle, il me marque l'erreur suivante :
Code:
Erreur de syntaxe lors de la conversion de la valeur varchar 'Installation du matériel' vers une colonne de type de données int.
Or, j'ai pu déterminer que l'erreur ne vient pas de l'insertion dans la table EVENEMENT(id, heure, table, message), mais des insertions dans la table INSTALLER(noSalle, codeMat, nbMatInstalles). De plus, j'ai bien vérifié mes types de données, je n'utilise que des int dans la fameuse insertion.
Voilà, j'espère avoir été assez précis sur l'erreur et le contexte, et que vous pourrez m'aider.
Merci d'avance