In questa pagina
Messaggio
Codice: 2396
Messaggio in italiano: %1!L’attributo non può trovarsi all’esterno di un elemento.
Messaggio in inglese: %sAttribute may not appear outside of an element
Spiegazione
In una query in cui si interroga un campo XML tramite campo.query non è possibile accedere al valore di un attributo tramite una classica espressione XQuery del tipo /nodo/@attributo.
Causa
Si è tentato di accedere al valore di un attributo XML tramite una query XPath del tipo /nodo/@attributo usando campo.query.
Esempio:
SELECT Id, Nome.Query('/Nomi/Nome/@Valore') FROM Tabella
Parametri
%1! rappresenta il messaggio XQuery dell’evento che ha generato l’errore.
Soluzione
Usare .value al posto di .query per ottenere il valore scalare dell’attributo, in questo modo:
SELECT Id, Nome.Value('(/Nomi/Nome/@Valore)[1]', 'varchar') FROM Tabella
Nell’espressione di Value, usare la query XQuery tra parentesi e fare riferimento all’elemento [1] per non ottenere un errore 2389