GetAncestor (Mecanismo do Banco de Dados)
Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure
Retorna uma hierarchyid que representa o nº ancestral de this.
Sintaxe
-- Transact-SQL syntax
child.GetAncestor ( n )
-- CLR syntax
SqlHierarchyId GetAncestor ( int n )
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
n
Um int, que representa o número de níveis para elevar na hierarquia.
Tipos de retorno
Tipo de retorno do SQL Server: hierarchyid
Tipo de retorno do CLR: SqlHierarchyId
Comentários
Usado para testar se cada nó da saída possui o nó atual como um ancestral no nível específico.
Se um número maior que GetLevel() for passado, NULL será retornado.
Se um número negativo for passado, ocorrerá uma exceção.
Exemplos
a. Localizando os nós filho de um pai
GetAncestor(1)
retorna os funcionários que têm david0
como o ancestral imediato (seu pai). O exemplo a seguir usa GetAncestor(1)
.
DECLARE @CurrentEmployee hierarchyid
SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\david0'
SELECT OrgNode.ToString() AS Text_OrgNode, *
FROM HumanResources.EmployeeDemo
WHERE OrgNode.GetAncestor(1) = @CurrentEmployee ;
B. Retornando os netos de um pai
GetAncestor(2)
retorna os funcionários que estão dois níveis abaixo na hierarquia a partir do nó atual. Estes funcionários são os netos do nó atual. O exemplo a seguir usa GetAncestor(2)
.
DECLARE @CurrentEmployee hierarchyid
SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\ken0'
SELECT OrgNode.ToString() AS Text_OrgNode, *
FROM HumanResources.EmployeeDemo
WHERE OrgNode.GetAncestor(2) = @CurrentEmployee ;
C. Retornando a linha atual
Para retornar o nó atual usando GetAncestor(0)
, execute o código a seguir.
DECLARE @CurrentEmployee hierarchyid
SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\david0'
SELECT OrgNode.ToString() AS Text_OrgNode, *
FROM HumanResources.EmployeeDemo
WHERE OrgNode.GetAncestor(0) = @CurrentEmployee ;
D. Retornando um nível de hierarquia se uma tabela não existir
GetAncestor
retornará o nível selecionado na hierarquia mesmo uma tabela não esteja presente. Por exemplo, o código a seguir especifica um funcionário atual e retorna a hierarchyid
do ancestral do funcionário atual sem fazer referência a uma tabela.
DECLARE @CurrentEmployee hierarchyid ;
DECLARE @TargetEmployee hierarchyid ;
SELECT @CurrentEmployee = '/2/3/1.2/5/3/' ;
SELECT @TargetEmployee = @CurrentEmployee.GetAncestor(2) ;
SELECT @TargetEmployee.ToString(), @TargetEmployee ;
E. Chamando um método de Common Language runtime
O snippet de código a seguir chama o método GetAncestor()
.
this.GetAncestor(1)
Confira também
IsDescendantOf (Mecanismo de Banco de Dados)
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, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de