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

Qual é o uso de um cursor no SQL Server?


Os cursores são um mecanismo para enumerar explicitamente as linhas de um conjunto de resultados, em vez de recuperá-lo como tal.

No entanto, embora possam ser mais confortáveis ​​de usar para programadores acostumados a escrever While Not RS.EOF Do ... , eles normalmente devem ser evitados nos procedimentos armazenados do SQL Server, se possível -- se você puder escrever uma consulta sem o uso de cursores, dará ao otimizador uma chance muito maior de encontrar uma maneira rápida de implementá-la.

Com toda a honestidade, nunca encontrei um caso de uso realista para um cursor que não pudesse ser evitado, com exceção de algumas tarefas administrativas, como fazer um loop em todos os índices do catálogo e reconstruí-los. Suponho que eles possam ter alguns usos na geração de relatórios ou mala direta, mas provavelmente é mais eficiente fazer o trabalho semelhante ao cursor em um aplicativo que se comunica com o banco de dados, deixando o mecanismo de banco de dados fazer o que faz melhor - manipulação de conjuntos.