Как получить значение из атрибута XML с помощью Sql:Variable в xquery

Я хочу получить значение атрибута из XML с помощью Xquery.

МОЙ XML

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

Ниже мой запрос.

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('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")]/sql:variable(@Attribute) )[1]','varchar(max)'),'') 
      FROM node 
     WHERE id=155

ниже строка отлично работает с sql:variable

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

но я получаю ошибку в строке ниже..

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

Любые идеи о том, как получить значение attribute(@Attribute) в результате?


person Mohmedsadiq    schedule 27.07.2012    source источник
comment
Какая версия SQL Server? Если вы используете .value, должно быть 2005+   -  person OMG Ponies    schedule 27.07.2012


Ответы (1)


Попробуйте что-то вроде

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