Existe uma forma de percorrer uma variável da tabela em TSQL sem usar o cursor?
Digamos que eu tenho a seguinte variável simples da tabela:
declare @databases table
(
DatabaseID int,
Name varchar(15),
Server varchar(15)
)
-- insert a bunch rows into @databases
Declarar e usar um cursor é a minha única opção se eu quisesse iterar através das linhas? Existe outra forma?
231
3
Em primeiro lugar, você deve ter certeza absoluta de que precisa iterar através de cada linha - as operações baseadas no conjunto serão mais rápidas em todos os casos que eu possa pensar e normalmente usarei um código mais simples.
Dependendo dos seus dados, pode ser possível fazer um loop usando apenas instruções selecionadas, como mostrado abaixo:
Outra alternativa é usar uma mesa temporária:
A opção que você deve escolher depende realmente da estrutura e do volume dos seus dados.
Nota: Se você estiver usando o SQL Server você seria melhor servido usando:
Utilizando
COUNT
terá que tocar cada linha da tabela, oEXISTS
só precisa tocar na primeira (veja Josef's answer abaixo).Aqui está como eu o faria:
Você pode usar um loop de tempo: