Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Percorrer sem cursor no SQL Server 2005


Você pode usar CTEs do SQL 2005 para fazer com que o mecanismo SQL faça isso recursivamente.

Uma enumeração de abordagens básicas está em http://blogs.msdn.com/anthonybloesch/archive/2006/02/15/Hierarchies-in-SQL-Server-2005.aspx

Celko também tem um livro de árvores no SQL que cobre tudo isso até o enésimo grau.

Ou você pode usar força bruta selecionando cada nível em uma variável de tabela local e, em seguida, fazendo um loop, inserindo filhos com um select, até que @@ROWCOUNT seja zero (ou seja, você não está encontrando mais filhos). Se você não tiver muitos dados, isso é fácil de codificar, mas você deu a entender que está procurando desempenho dizendo que não quer um cursor.