Procédure stockée avec un IF/ELSE
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 :
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
|
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 |
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)".
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.