xquery dans procédure stockée
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:
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:
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:
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:
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