2012-07-27 14 views
6

Deseo obtener el valor de atributo de XML usando Xquery.Cómo obtener valor del atributo XML usando Sql: Variable en xquery

MI XML es

<Answers> 
    <AnswerSet> 
    <Answer questionId="NodeID">155</Answer> 
    <Answer questionId="ParentNode" selectedValue="12">Product</Answer> 
    </AnswerSet> 
</Answers> 

A continuación es mi consulta.

DECLARE @Field Varchar(100) 
DECLARE @Attribute VARCHAR(100) 
SET @Field='ParentNode' 
SET @Attribute = 'selectedValue' 

SELECT ISNULL(PropertyXML.value('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")])[1]','varchar(max)'),'') , 

isnull (PropertyXML.value ('(/ Respuestas/AnswerSet/respuesta [@ IdPregunta = sql: variable ("@ Campo")]/sql: variable (@Attribute)) [1]',' varchar (max) '),' ') desde el nodo donde id = 155

debajo de la línea está trabajando muy bien con sql: variable de

ISNULL(PropertyXML.value('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")])[1]','varchar(max)'),'') 

pero estoy consiguiendo error en la línea de abajo ..

ISNULL(PropertyXML.value('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")]/sql:variable(@Attribute))[1]','varchar(max)'),'') 

Deseo obtener el valor de atributo proporcionado (@Attribute) en el resultado.

+0

¿Qué versión de SQL Server? Si está usando .value, tiene que ser 2005+ –

+0

sí 2005 y 2008 – Mohmedsadiq

Respuesta

2

intentar algo así como

ISNULL(@Xml.value('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")]/@*[local-name() = sql:variable("@Attribute")])[1]','varchar(max)'),'') 
+0

Gracias por su ayuda – Mohmedsadiq

Cuestiones relacionadas