Bonjour,

Je souhait écrire une procédure stocké qui décompose un flux XML, pour remplir une table, j'ai donc écrire le code suivant :

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
26
27
28
29
30
31
32
33
34
35
 
CREATE PROCEDURE dbo.test(
	@FluxXML XML
)
AS
DECLARE
	@eCleParcourXML INT,
	@bRetour BIT,
	@idRecherche INT,
	@Donnee VARCHAR(20);
BEGIN TRY
	--init de la clé de parcours du flux XML
	SET @eCleParcourXML = 1
	--Recherche des valeurs à ajouter
	WHILE @FluxXML.exist('(MULTISUR/MESURES)[sql:variable("@eCleParcourXML")]')=1
	BEGIN
		--recherche de l'id
		SET @idRecherche = @FluxXML.value('(MULTISUR/MESURES[sql:variable("@eCleParcourXML")]/IdInfoBancMesures)[1]','INT')
		--recherche de la donnée en fonction de l'ID
		SET @Donnee = @FluxXML.value('(MULTISUR/INFOBANCMESURES[@IDINFOBANCMESURES="[sql:variable("@idRecherche")]"]/MARQUEINFOBANCMESURES)[1]','VARCHAR(20)')
 
		--/****************
		--code d'insertion
		--****************/
 
		--incrémentation de la clé de parcours
		SET @eCleParcourXML = @eCleParcourXML+1
	END
	SET @bRetour = 1
END TRY
BEGIN CATCH
	SET @bRetour = 0
 
END CATCH
SELECT @bRetour as retour
Mais SQL Server me renvoi l'erreur suivante lorsque j'exécute le code de création de la procédure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Msg 2205, Niveau 16, État 1, Procédure test, Ligne 19
XQuery [value()]: ")" attendu.
L'erreur semble être au niveau de la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SET @Donnee = @FluxXML.value('(MULTISUR/INFOBANCMESURES[@IDINFOBANCMESURES="[sql:variable("@idRecherche")]"]/MARQUEINFOBANCMESURES)[1]','VARCHAR(20)')
j'ai donc essayé sans le sql:variable ce qui donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SET @Donnee = @FluxXML.value('(MULTISUR/INFOBANCMESURES[@IDINFOBANCMESURES="1"]/MARQUEINFOBANCMESURES)[1]','VARCHAR(20)')
et là je n'est plus d'erreur à l’exécution.

Quelqu'un aurait il déjà eu le problème? Si oui comment le résoudre ?

Merci d'avance.

PS : Je suis sur une version 2008R2 de SQL Server