SQL 2008 hierarchyid
Der SQL Server 2008 hat einen neuen Datentyp hierarchyid. Kurz formuliert lässt sich mit diesem Datentyp eine Hierarchy Abbilden und einige Funktionen darauf ausführen. Der Datentyp ist ein CLR Datentyp, d.h. er ist in .NET geschrieben. Was mir fehlte, war eine Funktion, um alle Eltern eines Knotens zu erfragen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | CREATE FUNCTION fn_get_parent_hierarchyids ( @CurrentHierarchy hierarchyid, @IncludeParam bit = 1 ) RETURNS @tblHierarchy TABLE ( hierarchy hierarchyid NOT NULL ) AS BEGIN -- Fill the table variable with the rows for your result set declare @L_Parent hierarchyid IF 1 = @IncludeParam begin INSERT INTO @tblHierarchy VALUES ( @CurrentHierarchy ) end SELECT DISTINCT @L_Parent = @CurrentHierarchy.GetAncestor(1) FROM tabelle while NOT @L_Parent IS NULL begin INSERT INTO @tblHierarchy VALUES ( @L_Parent ) SELECT DISTINCT @L_Parent = @L_Parent.GetAncestor(1) FROM tabelle end RETURN END |
