GetDescendant (Veritabanı Altyapısı)
Üst, alt düğüm döndürür.
-- Transact-SQL syntax
parent.GetDescendant ( child1 , child2 )
-- CLR syntax
SqlHierarchyId GetDescendant ( SqlHierarchyId child1 , SqlHierarchyId child2 )
Bağımsız değişkenler
child1
NULL veya hierarchyid Geçerli düğüm alt.child2
NULL veya hierarchyid Geçerli düğüm alt.
Dönüş Türleri
**SQL Server dönüş türü:**hierarchyid
**CLR dönüş türü:**SqlHierarchyId
Remarks
Bir alt, üst, alt düğüm bir) verir.
Üst NULL ise, NULL döndürüyor.
Üst alt, üst BOş değil ve child1 hem alt2 NULL olduğundan, verir.
Üst ve child1 BOş olmayan ve alt2 NULL ise, üst alt child1 büyük verir.
Üst alt üst ve alt2 BOş olmayan ve NULL child1 varsa, alt2'dan küçük döndürür.
Üst ve child1 alt2 NULL olmayan, üst alt child1 daha büyüktür ve küçüktür alt2 verir.
Child1 NULL ve üst alt değil ise, bir özel duruma neden oldu.
Alt2 NULL ve üst alt değil ise, bir özel duruma neden oldu.
Child1 >alt2 = bir özel duruma neden oldu.
GetDescendant Deterministic olur.Bu nedenle, GetDescendant adlandırılır ile aynı girdileri, aynı çıkışı her zaman üretecektir. Ancak, üretilen alt tam kimliğinin ilişkisini diğer düğümlere bağlı olarak c örnekte gösterildiği gibi değişebilir
Örnekler
C.En az bir alt düğümü olarak bir satır ekleme
Yeni BIR çalışan, bir düğümdeki varolan bir çalışan için işe /3/1/. Aşağıdaki kodu kullanarak yeni bir satır eklemek için yürütmek GetDescendant Yeni bir satır düğüm olarak belirtmek için bağımsız değişken olmadan yöntem /3/1/1/:
DECLARE @Manager hierarchyid
SELECT @Manager = CAST('/3/1/' AS hierarchyid)
INSERT HumanResources.EmployeeDemo (OrgNode, LoginID, Title, HireDate)
VALUES
(@Manager.GetDescendant(NULL, NULL),
'adventure-works\FirstNewEmployee', 'Application Intern', '3/11/07') ;
b.Bir büyük alt düğümü olarak bir satır ekleme
Başka bir yeni çalışan işe A. örnekte olduğu gibi aynı yöneticiyi bildirdiği içinAşağıdaki kodu kullanarak yeni bir satır eklemek için yürütmek GetDescendant düğümü yeni satırın örnekte A düğümü izleyeceği belirtmek için alt 1 bağımsız değişkenini kullanarak, olma yöntem /3/1/2/:
DECLARE @Manager hierarchyid, @Child1 hierarchyid
SELECT @Manager = CAST('/3/1/' AS hierarchyid)
SELECT @Child1 = CAST('/3/1/1/' AS hierarchyid)
INSERT HumanResources.EmployeeDemo (OrgNode, LoginID, Title, HireDate)
VALUES
(@Manager.GetDescendant(@Child1, NULL),
'adventure-works\SecondNewEmployee', 'Application Intern', '3/11/07') ;
c.Var olan iki düğüm arasında bir satır ekleme
Üçüncü BIR çalışanı işe A. örnekte olduğu gibi aynı yöneticiyi bildirdiği içinBu örnek, büyük bir düğüm için yeni satır ekler FirstNewEmployee örnekte, A ve küçüktür SecondNewEmployee B. örnekte Aşağıdaki kodu kullanarak yürütmek GetDescendant yöntem. Child1 bağımsız değişkeni hem de alt2 bağımsız değişkeni düğüm yeni satırın düğüm olacak belirtmek için kullanın... /3/1/1.1/:
DECLARE @Manager hierarchyid, @Child1 hierarchyid, @Child2 hierarchyid
SELECT @Manager = CAST('/3/1/' AS hierarchyid)
SELECT @Child1 = CAST('/3/1/1/' AS hierarchyid)
SELECT @Child2 = CAST('/3/1/2/' AS hierarchyid)
INSERT HumanResources.EmployeeDemo (OrgNode, LoginID, Title, HireDate)
VALUES
(@Manager.GetDescendant(@Child1, @Child2),
'adventure-works\ThirdNewEmployee', 'Application Intern', '3/11/07') ;
Örnekleri A, B ve C tamamladıktan sonra tabloya eklenen düğüm eşleri aşağıdaki olacaktır hierarchyid Değerler:
/3/1/1/
/3/1/1.1/
/3/1/2/
Düğüm /3/1/1.1/ Düğüm ' büyük /3/1/1/ Ancak aynı hiyerarşi düzeyinde.
d.skaler örnekleri
SQL Server rasgele eklemeleri ve silmeleri herhangi destekler. hierarchyid düğümlerin. Kullanarak GetDescendant(), arasındaki herhangi iki düğüm oluşturmak her zaman mümkündür hierarchyid düğümlerin. Örnek düğümlerin kullanarak oluşturmak için şu kodu çalıştırın. GetDescendant:
DECLARE @h hierarchyid = hierarchyid::GetRoot()
DECLARE @c hierarchyid = @h.GetDescendant(NULL, NULL)
SELECT @c.ToString()
DECLARE @c2 hierarchyid = @h.GetDescendant(@c, NULL)
SELECT @c2.ToString()
SET @c2 = @h.GetDescendant(@c, @c2)
SELECT @c2.ToString()
SET @c = @h.GetDescendant(@c, @c2)
SELECT @c.ToString()
SET @c2 = @h.GetDescendant(@c, @c2)
SELECT @c2.ToString()
e.CLR örnek
Parçacık çağrıları aşağıdaki kod GetDescendant() yöntem:
SqlHierarchyId parent, child1, child2;
parent = SqlHierarchyId.GetRoot();
child1 = parent.GetDescendant(SqlHierarchyId.Null, SqlHierarchyId.Null);
child2 = parent.GetDescendant(child1, SqlHierarchyId.Null);
Console.Write(parent.GetDescendant(child1, child2).ToString());
See Also