Condividi tramite


IsDescendantOf (Motore di database)

Restituisce true se l'elemento è un discendente dell'elemento padre.

Sintassi

-- Transact-SQL syntax
child.IsDescendantOf ( parent )

-- CLR syntax
SqlHierarchyId IsDescendantOf (SqlHierarchyId parent ) 

Argomenti

  • parent
    Nodo hierarchyid per cui IsDescendantOf deve essere eseguito.

Tipi restituiti

**Tipo SQL Server restituito:**bit

**Tipo CLR restituito:**SqlBoolean

Osservazioni

Restituisce true per tutti i nodi nel sottoalbero con radice nel padre specificato e false per tutti gli altri nodi.

Un padre è considerato discendente di se stesso.

Esempi

A. Utilizzo di IsDescendantOf in una clausola WHERE

Nell'esempio seguente vengono restituiti un responsabile e i relativi dipendenti diretti:

DECLARE @Manager hierarchyid
SELECT @Manager = OrgNode FROM HumanResources.EmployeeDemo
  WHERE LoginID = 'adventure-works\dylan0'

SELECT * FROM HumanResources.EmployeeDemo
WHERE OrgNode.IsDescendantOf(@Manager) = 1

B. Utilizzo di IsDescendantOf per valutare una relazione

Nel codice seguente vengono dichiarate tre variabili cui vengono assegnati i valori relativi. Viene quindi valutata la relazione gerarchica e restituito uno dei due risultati stampati in base al confronto:

DECLARE @Manager hierarchyid, @Employee hierarchyid, @LoginID nvarchar(256)
SELECT @Manager = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\terri0' ;

SELECT @Employee = OrgNode, @LoginID = LoginID FROM HumanResources.EmployeeDemo
  WHERE LoginID = 'adventure-works\rob0'

IF @Employee.IsDescendantOf(@Manager) = 1
   BEGIN
    PRINT 'LoginID ' + @LoginID + ' is a subordinate of the selected Manager.'
   END
ELSE
   BEGIN
    PRINT 'LoginID ' + @LoginID + ' is not a subordinate of the selected Manager.' ;
   END

C. Chiamata a un metodo Common Language Runtime

Nel frammento di codice seguente viene chiamato il metodo IsDescendantOf().

this.IsDescendantOf(Parent)