Selbstaufrunfende Prozedur in Cursor-Schleife

mackel90

Mitglied
Selbstaufrufende Prozedur in Cursor-Schleife

Hi,

hab nen Ordner/Datei System in einer Datenbank angelegt. Nun möchte ich es so machen, das ich bei einem "Ordner" die ganzen "Dateien" rekursiv durch die "Ordner" zählen möchte. Es hantelt sich um ein virtuelles "Dateisystem" in einer MSSQL 2005 Express DB...

EDIT: ... Hab noch ein wenig rumprobiert und hat sich jetzt erledigt....

Trotsdem vielen Dank :-)

Mackel

MOD: Das kann jetzt gelöscht werden
 
Zuletzt bearbeitet:
Hallo mackel90,

ist denn der Sinn eines Forums nicht Lösungen zu erarbeiten? Auch wenn Du selbst auf die Lösung gekommen bist kannst Du die doch hier posten, oder... ? Evtl. hat ja irgend jemand auf der Welt genau das gleich Problem und könnte die Lösung gebrauchen.

WIKIPEDIA:
Ein Internetforum (lat. forum, Marktplatz), auch Diskussionsforum, ist ein virtueller Platz zum Austausch und Archivierung von Gedanken, Meinungen und Erfahrungen. Die Kommunikation findet dabei asynchron, das heißt nicht in Echtzeit, statt. Englische Bezeichnungen dafür sind internet forum und webboard.
 
Ok, ihr habt recht, werde den Script meiner Lösung posten. Wie gesagt, das ganze ist eine Stored Procedure(SQL 2005)

Man kann sie generell für alles benutzen was in einer Baumstruktur aufgebaut ist.
Wie hier ein virtuelles Datei/Ordner Verzeichnis. Es werden die enthaltenen Dateien gezählt, nicht die Ordner.

PHP:
CREATE procedure GetSubFilesCount

@FolderId    int,
@count         int OUTPUT

as

declare @Cursor CURSOR,@id  int,@out int

set @count = (SELECT Count([FileId]) FROM File where [FolderId]=@FolderId)

SET @Cursor = CURSOR FAST_FORWARD
    FOR
    SELECT [FolderId] FROM Folder WHERE [Parent] = @FolderId

OPEN @Cursor
FETCH NEXT FROM @Cursor INTO @id

WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC GetSubFilesCount @id , @out OUTPUT
    SET @count = @count + @out
    FETCH NEXT FROM @Cursor INTO @id
END
CLOSE @Cursor
DEALLOCATE @Cursor

GO
Ist vieleicht nicht ganz straight-forward aber es geht ganz gut.

Mackel
 
Zuletzt bearbeitet:
Zurück