none
Percorrer registros tabela SQL RRS feed

Respostas

  • Rafael,

         Percorrer linha a linha uma query no SQL Server não é recomendado... Isso se chama Cursor based. Entretanto, se voce desejar REALMENTE fazer isso, utilize um cursor no SQL Server, mas lembre-se de tomar cuidado com a performance.

    Veja um exemplo básico retirado do Books Online:

    DECLARE authors_cursor CURSOR
       FOR SELECT * FROM authors
    OPEN authors_cursor
    FETCH NEXT FROM authors_cursor
    


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    quarta-feira, 4 de dezembro de 2013 16:57
    Moderador

Todas as Respostas

  • Rafael, qual sua real necessidade?

    Você consegue fazer utilizando Fetch, porém dependendo do tamanho da tabela pode tornar o processamento muito demorado.


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    quarta-feira, 4 de dezembro de 2013 16:48
  • Rafael,

         Percorrer linha a linha uma query no SQL Server não é recomendado... Isso se chama Cursor based. Entretanto, se voce desejar REALMENTE fazer isso, utilize um cursor no SQL Server, mas lembre-se de tomar cuidado com a performance.

    Veja um exemplo básico retirado do Books Online:

    DECLARE authors_cursor CURSOR
       FOR SELECT * FROM authors
    OPEN authors_cursor
    FETCH NEXT FROM authors_cursor
    


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    quarta-feira, 4 de dezembro de 2013 16:57
    Moderador
  • Eu evito o uso do cursor. Prefiro utilizar o While.

    declare @count bigint
    
    set rowcount 0 
    select au_id,au_lname,au_fname into #mytemp from authors 
    
    set rowcount 1 
    select @count = au_id from #mytemp 
    
    while @@rowcount <> 0 
    begin 
         set rowcount 0 
         select au_id,au_lname,au_fname from #mytemp where au_id = @count 
         delete #mytemp where au_id = @count 
         set rowcount 1 
         select @count = au_id from #mytemp 
    end 
    set rowcount 0 
    


    quinta-feira, 5 de dezembro de 2013 17:37