Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Schleife ohne Cursor in SQL Server 2005

Sie können SQL 2005-CTEs verwenden, um die SQL-Engine dazu zu bringen, dies rekursiv zu tun.

Eine Aufzählung grundlegender Ansätze finden Sie unter http://blogs.msdn.com/anthonybloesch/archive/2006/02/15/Hierarchies-in-SQL-Server-2005.aspx

Celko hat auch ein Buch mit Bäumen in SQL, das all dies bis zum n-ten Grad abdeckt.

Oder Sie können es brutal erzwingen, indem Sie jede Ebene in eine lokale Tabellenvariable auswählen und dann in einer Schleife untergeordnete Elemente mit einer Auswahl einfügen, bis Ihr @@ROWCOUNT Null ist (dh Sie finden keine untergeordneten Elemente mehr). Wenn Sie nicht viele Daten haben, ist dies einfach zu programmieren, aber Sie haben angedeutet, dass Sie nach Leistung suchen, indem Sie sagten, dass Sie keinen Cursor wollen.