Bonjour à toutes et à tous,
J'ai une table contenant des ordinateurs ('computerName'), avec une liste de composants sous forme de chaine de caractères ('objectsList'), et le statut du poste sous la forme d'un caractère ('status').
Je dois travailler avec l'existant, je ne peux pas modifier cette table, je sais ce n'est pas très "feng shui" comme structure de BDD.
Pour remplir cette table j'utilise une procédure stockée et respectant quelques consignes:
- je ne dois avoir qu'une ligne par ordinateur, donc le 'computerName' doit être unique
- Si le 'computerName' existe déjà et que le 'status' est égale à 'A' alors je fais un update de la ligne
- Sinon le 'computerName' existe déjà mais que le 'status' n'est pas égal à 'A' alors je ne fais rien
Voici la procédure que j'ai écrit :
J'obtiens une erreur SQL "Incorrect syntax near '='" mais je ne sais pas pour quelle ligne. La ligne indiquée par Ms-SQL contient cela : "(computerName,objectsList,status)".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ALTER PROCEDURE [dbo].[sp_INSERT_REQUEST] @computerName varchar(25), @objectsList varchar(1024) AS BEGIN IF NOT EXISTS ( SELECT computerName FROM dbo.matable WHERE computerName = @computerName ) BEGIN INSERT INTO matable (computerName,objectsList,status) VALUES (@computerName,@objectsList,'D') END ELSE IF EXISTS ( SELECT computerName FROM dbo.matable WHERE computerName = @computerName AND status = 'A' ) BEGIN EXEC dbo.sp_UPDATE_REQUEST lastRenevalTest = GETDATE(), objectsList = @objectsList, status = 'D'; END END
Est-ce que cette procédure vous parait correcte dans le raisonnement, et quelle est la petite coquille qui s'est glissée dedans et que je ne vois pas?
Merci pour votre attention.
Partager