In questa pagina
Messaggio
Codice: 2389
Messaggio in italiano: %1!’%2!’ richiede un singleton o una sequenza vuota. Trovato operando di tipo ‘%3!’.
Messaggio in inglese: %s’%ls’ requires a singleton (or empty sequence), found operand of type ‘%ls’
Spiegazione
In una query in cui si interroga un campo XML tramite campo.value non è possibile accedere al valore di un attributo tramite una classica espressione XPath del tipo /nodo/@attributo, perché è considerato alla stregua di un elemento multiplo e non scalare.
Causa
Si è tentato di accedere al valore di un attributo XML tramite una query XPath del tipo /nodo/@attributo usando campo.value.
Esempio:
SELECT Id, Nome.Value('/Nomi/Nome/@Valore', 'varchar') FROM Tabella
Parametri
%1! rappresenta il messaggio XQuery dell’evento che ha generato l’errore.
%2! rappresenta la funzione che ha generato l’errore
%3! rappresenta il tipo che non è considerato come valore scalare
Soluzione
Scrivere l’espressione XPath tra parentesi e applicare l’indice [1]:
Esempio non funzionante:
SELECT Id, Nome.Value('/Nomi/Nome/@Valore', 'varchar') FROM Tabella
Esempio funzionante:
SELECT Id, Nome.Value('(/Nomi/Nome/@Valore)[1]', 'varchar') FROM Tabella
2 commenti su “2389 – %1!’%2!’ richiede un singleton o una sequenza vuota. Trovato operando di tipo ‘%3!’.”