Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se:SQL Server
A atomização é o processo de extrair o valor digitado de um item. Esse processo está implícito em determinadas circunstâncias. Alguns dos operadores XQuery, como operadores de aritmética e de comparação, dependem desse processo. Por exemplo, quando você aplica operadores aritméticos diretamente aos nós, o valor digitado de um nó é recuperado primeiro invocando implicitamente a função de dados. Isso passa o valor atômico como um operando para o operador aritmético.
Por exemplo, a consulta a seguir retorna o total dos LaborHours atributos. Nesse caso, data() é aplicado implicitamente aos nós de atributo.
DECLARE @x AS XML;
SET @x = '<ROOT><Location LID="1" SetupTime="1.1" LaborHours="3.3" />
<Location LID="2" SetupTime="1.0" LaborHours="5" />
<Location LID="3" SetupTime="2.1" LaborHours="4" />
</ROOT>';
-- data() implicitly applied to the attribute node sequence.
SELECT @x.query('sum(/ROOT/Location/@LaborHours)');
Embora não seja necessário, você também pode especificar explicitamente a data() função:
SELECT @x.query('sum(data(ROOT/Location/@LaborHours))');
Outro exemplo de atomização implícita é quando você usa operadores aritméticos. O + operador requer valores atômicos e data() é aplicado implicitamente para recuperar o valor atômico do LaborHours atributo. A consulta é especificada na coluna Instructions do tipo xml na tabela ProductModel. A consulta a seguir retorna o LaborHours atributo três vezes. Na consulta, considere:
Na construção do atributo, a
OriginalLaborHoursatomização é implicitamente aplicada à sequência singleton retornada por$WC/@LaborHours. O valor digitado doLaborHoursatributo é atribuído aOriginalLaborHours.Ao construir o
UpdatedLaborHoursV1atributo, o operador aritmético requer valores atômicos. Portanto,data()é aplicado implicitamente aoLaborHoursatributo retornado por$WC/@LaborHours. O valor atômico 1 é então adicionado a ele. A construção do atributoUpdatedLaborHoursV2mostra a aplicação explícita dedata(), mas não é necessária.
SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
for $WC in /AWMI:root/AWMI:Location[1]
return
<WC OriginalLaborHours = "{ $WC/@LaborHours }"
UpdatedLaborHoursV1 = "{ $WC/@LaborHours + 1 }"
UpdatedLaborHoursV2 = "{ data($WC/@LaborHours) + 1 }" >
</WC>') AS Result
FROM Production.ProductModel
WHERE ProductModelID = 7;
Eis o resultado:
<WC OriginalLaborHours="2.5"
UpdatedLaborHoursV1="3.5"
UpdatedLaborHoursV2="3.5" />
A atomização resulta em uma instância de um tipo simples, um conjunto vazio ou um erro de tipo estático.
A atomização também ocorre em parâmetros de expressão de comparação passados para funções, valores retornados por funções, cast() expressões e expressões de ordenação passadas na ordem por cláusula.