sql >> Database >  >> RDS >> Sqlserver

Loop door zonder cursor in SQL Server 2005

U kunt SQL 2005 CTE's gebruiken om de SQL-engine dit recursief te laten doen.

Een opsomming van basisbenaderingen is te vinden op http://blogs.msdn.com/anthonybloesch/archive/2006/02/15/Hierarchies-in-SQL-Server-2005.aspx

Celko heeft ook een bomen-in-SQL-boek waarin dit alles tot in de puntjes wordt behandeld.

Of je kunt het bruut forceren door elk niveau in een lokale tabelvariabele te selecteren en vervolgens te herhalen, kinderen in te voegen met een select, totdat je @@ROWCOUNT nul is (d.w.z. je vindt geen kinderen meer). Als je niet veel gegevens hebt, is dit gemakkelijk te coderen, maar je liet doorschemeren dat je prestaties zoekt door te zeggen dat je geen cursor wilt.



  1. Rol bestaat niet en kan geen database maken bij gebruik van PostgreSQL

  2. Keep-alive gebruiken:ORA-00933:SQL-opdracht niet correct beëindigd

  3. Hoe te controleren of een string een geldige DATE, TIME of DATETIME is

  4. SQL Server 2008:dubbele rijen verwijderen