Utilisation de variables dans une boucle de remplacement
Bonjour à tous,
Dans la colonne (Settings (ntext,null)) d’une table (Misc) de ma base de données j’essaye de partout supprimer le Mois/Jour qui suit l'expression <Transfert> (remplacer par exemple <Transfert>12/1 par <Transfert>).
"Mois" variant de 1 à 12 et "Jour" de 1 à 7, les 84 lignes de commandes SQL de ce type fonctionnent :
Code:
1 2 3 4 5 6 7 8 9 10
| UPDATE Misc SET Settings = CAST(REPLACE(CAST(Settings as NVarchar(max)),'<Transfert>1/1','<Transfert>') AS NText)
UPDATE Misc SET Settings = CAST(REPLACE(CAST(Settings as NVarchar(max)),'<Transfert>1/2','<Transfert>') AS NText)
UPDATE Misc SET Settings = CAST(REPLACE(CAST(Settings as NVarchar(max)),'<Transfert>1/7','<Transfert>') AS NText)
(
)
UPDATE Misc SET Settings = CAST(REPLACE(CAST(Settings as NVarchar(max)),'<Transfert>12/1','<Transfert>') AS NText)
UPDATE Misc SET Settings = CAST(REPLACE(CAST(Settings as NVarchar(max)),'<Transfert>12/7','<Transfert>') AS NText) |
Je souhaite maintenant utiliser une syntaxe plus concise par le biais de deux boucles WHILE :
Code:
1 2 3 4 5 6 7 8 9 10 11
| DECLARE @X int, @Y int
SET @X = 1
SET @Y = 1
WHILE (@X <=12) BEGIN
WHILE (@Y <=7) BEGIN
UPDATE Misc SET Settings = CAST(REPLACE(CAST(Settings as NVarchar(max)),'<Transfert>@X/@Y','<Transfert>') AS NText)
SET @Y = @Y + 1
END
SET @X = @X + 1
SET @Y = 1
END |
Ceci s’exécute sans erreur dans SSMSE mais les remplacements ne s’effectuent malheureusement pas.
J’ai l’impression que la syntaxe de '<Transfert>@X/@Y' n’est pas correcte, quelqu’un peut-il m’expliquer pourquoi ?
Merci d’avance pour vos lumières !