GetReparentedValue (Mecanismo de Banco de Dados)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Retorna um nó cujo caminho da raiz é o caminho para newRoot, seguido do caminho de oldRoot.

Sintaxe

-- Transact-SQL syntax  
node. GetReparentedValue ( oldRoot, newRoot )  
-- CLR syntax  
SqlHierarchyId GetReparentedValue ( SqlHierarchyId oldRoot , SqlHierarchyId newRoot )  

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

oldRoot
Uma hierarchyid que é o nó que representa o nível da hierarquia que será modificada.

newRoot
Um hierarchyid que representa o nó. Substitua a seção oldRoot do nó atual para mover o nó.

Tipos de retorno

Tipo de retorno do SQL Server: hierarchyid

Tipo de retorno do CLR: SqlHierarchyId

Comentários

Usado para modificar a árvore movendo nós de oldRoot para newRoot. GetReparentedValue é usado para mover um nó de hierarquia para uma localização nova na hierarquia. O tipo de dados hierarchyid representa, mas não impõe a estrutura hierárquica. Os usuários devem assegurar-se de que o hierarchyid está estruturado adequadamente para o local novo. Um índice exclusivo no tipo de dados hierarchyid pode ajudar a prevenir entradas duplicadas. Para obter um exemplo de como mover uma subárvore inteira, confira Dados hierárquicos (SQL Server).

Exemplos

a. Comparando dois locais de nó

O exemplo seguinte mostra o hierarchyid atual de um nó. Ele também mostra qual será a hierarchyid do nó se o nó for movido para se tornar um descendente do nó @NewParent. Ele usa o método ToString() para mostrar as relações hierárquicas.

DECLARE @SubjectEmployee hierarchyid , @OldParent hierarchyid, @NewParent hierarchyid  
SELECT @SubjectEmployee = OrgNode FROM HumanResources.EmployeeDemo  
  WHERE LoginID = 'adventure-works\gail0' ;  
SELECT @OldParent = OrgNode FROM HumanResources.EmployeeDemo  
  WHERE LoginID = 'adventure-works\roberto0' ; -- who is /1/1/  
SELECT @NewParent = OrgNode FROM HumanResources.EmployeeDemo  
  WHERE LoginID = 'adventure-works\wanida0' ; -- who is /2/3/  
  
SELECT OrgNode.ToString() AS Current_OrgNode_AS_Text,   
(@SubjectEmployee. GetReparentedValue(@OldParent, @NewParent) ).ToString() AS Proposed_OrgNode_AS_Text,  
OrgNode AS Current_OrgNode,  
@SubjectEmployee. GetReparentedValue(@OldParent, @NewParent) AS Proposed_OrgNode,  
*  
FROM HumanResources.EmployeeDemo  
WHERE OrgNode = @SubjectEmployee ;  
GO  

B. Atualizando um nó para um novo local

O exemplo a seguir usa GetReparentedValue() em uma instrução UPDATE para mover um nó de um local antigo para um novo local na hierarquia:

DECLARE @SubjectEmployee hierarchyid , @OldParent hierarchyid, @NewParent hierarchyid  
SELECT @SubjectEmployee = OrgNode FROM HumanResources.EmployeeDemo  
  WHERE LoginID = 'adventure-works\gail0' ; -- Node /1/1/2/  
SELECT @OldParent = OrgNode FROM HumanResources.EmployeeDemo  
  WHERE LoginID = 'adventure-works\roberto0' ; -- Node /1/1/  
SELECT @NewParent = OrgNode FROM HumanResources.EmployeeDemo  
  WHERE LoginID = 'adventure-works\wanida0' ; -- Node /2/3/  
  
UPDATE HumanResources.EmployeeDemo  
SET OrgNode = @SubjectEmployee. GetReparentedValue(@OldParent, @NewParent)   
WHERE OrgNode = @SubjectEmployee ;  
  
SELECT OrgNode.ToString() AS Current_OrgNode_AS_Text,   
*  
FROM HumanResources.EmployeeDemo  
WHERE LoginID = 'adventure-works\gail0' ; -- Now node /2/3/2/  

C. Exemplo de CLR

O seguinte snippet de código chama o método GetReparentedValue ():

this. GetReparentedValue(oldParent, newParent)  

Confira também

Referência de método de tipo de dados hierarchyid
Dados hierárquicos (SQL Server)
hierarchyid (Transact-SQL)