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)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: ao longo de 2024, vamos eliminar problemas do GitHub como o mecanismo de comentários para conteúdo e substituí-lo por um novo sistema de comentários. Para obter mais informações, consulte:Enviar e exibir comentários de