A instrução SELECT para preencher meu CURSOR do Sql Server pode (frequentemente) retornar zero linhas.
É aconselhável incluí-lo em uma verificação IF para que o CURSOR não seja Declarado, Aberto, Fechado e Desalocado?
Ou o RDMS saberá automaticamente que não deve criar o CURSOR e/ou um IF baseado exatamente no mesmo SELECT inferirá o processamento da consulta duas vezes?
Se o conjunto de dados de origem do cursor contiver 0 linhas, essas etapas do cursor serão mínimas e insignificantes. Eu não me preocuparia em codificar uma
IF
declaração para isso.Sim, isso fará com que a
SELECT
consulta seja executada duas vezes, o que, dependendo da consulta, pode consumir muitos recursos mensuravelmente e potencialmente bloquear as tabelas subjacentes duas vezes mais. Então é melhor você não fazer isso.Se você fizesse isso, seria melhor executar a
SELECT
consulta uma vez e armazenar os resultados em uma tabela temporária. Dessa forma, você poderá reutilizar os resultados da tabela temporária posteriormente, se houver algum. Mas, como mencionei anteriormente, acho que umaIF
declaração é desnecessária de qualquer maneira.