2012-07-27 19 views
6

Chcę uzyskać wartość atrybutu z XML przy użyciu Xquery.Jak uzyskać wartość z atrybutu XML za pomocą Sql: Variable in xquery

MY XML jest

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

Poniżej jest moje zapytania.

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 ((/ odpowiedzi/AnswerSet/odpowiedź [@ questionId = SQL: zmienna ("@ Pole")]/SQL: zmienna (@Attribute)) [1] ",” varchar (max) '),' ') od węzła WHERE id = 155

poniżej linii działa poprawnie z sql: variable

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

ale otrzymuję błąd w wierszu poniżej ..

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

Chcę uzyskać wynikową wartość atrybutu (@Attribute) w wyniku.

+0

Jaka wersja SQL Server? Jeśli używasz .value, musi być 2005+ –

+0

yes 2005 and 2008 – Mohmedsadiq

Odpowiedz

2

Spróbuj czegoś podobnego

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

Dzięki za pomoc – Mohmedsadiq

Powiązane problemy