Rekursion mit T-SQL

cubeless

Mitglied
Hallo,

ich verwende den MS-SQL-Server als DBMS und habe folgende Relation:

Group(group_id, parent_id, name, ...)

Nun möchte mithilfe einer rekursiven Table-valued Function, die eine Gruppen-ID als Parameter aufnimmt alle Kinderelemente einer Gruppe als Tabelle zurückgeben lassen.

Leider scheiter ich total an der Rekursion, kann mir bitte jemand weiterhelfen?

Vielen Dank!
Grüße
Daniel
 
Hi

Soweit mir bekannt, unterstützt SQL keine Rekursion (lass mich aber gern eines besseren belehren)
Du kannst sowas nur per rekursivem Funktionsaufruf regeln.
 
Tut mir leid, dann habe ich mich falsch ausgedrückt.

Ich wollte das Ganze natürlich mit einem rekursiven Funktionsaufruf lösen, aber genau das verstehe ich nicht, da die jeweiligen Ergebnisse Sets sind.
 
Und was genau verstehst du nicht?
Wie machst du denn die Funktionsaufrufe (Sprache,.....) ?

Ggf wäre ein bisschen Code nicht schlecht, in dem du zeigst, wo dein Problem genau liegt
 
Hallo,
das ganze mache ich in T-SQL.

Code:
CREATEFUNCTION [dbo].[fkt_recursive_groups] 
(	
	@param_group_id INT = 1
)
RETURNS @result TABLE (group_id INT, parent_id INT)
AS
BEGIN

	--code here
	DECLARE @group_id INT, @parent_id INT
	DECLARE @r INT, @i INT

	INSERT INTO @result
	SELECT group_id, parent_id 
	FROM [Group] 
	WHERE parent_id =@param_group_id

	SET @i = 1
	WHILE(@i<=@r)
		BEGIN
		--pro durchlauf die rekursion starten...
		SET @i = @i + 1
		END

RETURN
END

Ich verstehe nicht, wie ich das Ergebnis an die Ergebnis-Tabelle pro Rekursionsdurchlauf weitergebe.

Grüße
Daniel
 
Zurück