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
Quando si richiama il valore di un attributo con XPath in SQL server potrebbe essere restituito più di un valore.
Per ottenere il valore dell’attributo è necessario richiamarlo per value (e non per query) e specificare la sua posizione nell’array dei valori, anche se l’attributo non è ripetuto. Inoltre va specificato il tipo, come stringa.
Causa
Si è tentato di utilizzare una sintassi in cui si estrae il valore di un attributo come valore scalare.
Esempio:
DECLARE @x XML = '<test><node value="test"/></test>'
SELECT @x.query('/test/node/@value');
Lo stesso esempio, funzionante. In evidenza le modifiche:
DECLARE @x XML = '<test><node value="test"/></test>' SELECT @x.value('(/test/node/@value)[1]', 'varchar(20)');
Parametri
%1! rappresenta il punto che genera l’errore. Nell’esempio, XQuery [query()].
Soluzione
Modificare il codice per ottenere un valore scalare (value) invece che un insieme (query), e aggiungere il tipo ritornato.