none
Exemplo de Cursor RRS feed

  • Pergunta

  • Boa noite

    Estou tentando aprender cursores no sql e gostaria de algum

    exemplo simples de utilização.

    Por exemplo: se eu tivesse uma tabela de Clientes, com código e nome,
    como fazer para percorrer todos os registros e a cada linha, dar um print com o nome do cliente.

    Seria bom também um exemplo com uma clausula Where.


    Não conheço muito de banco de dados. Trabalho .NET

    Agradeço a ajuda de todos.
    quarta-feira, 4 de maio de 2011 21:36

Respostas

  • Fera, segue um exemplo simples de cursor, de acordo o próprio exemplo que você sugeriu. Há uma documentação mais extensa, do Rodrigo Crespi, em http://imasters.com.br/artigo/4867/sql_server/cursores/ (caso interesse). Abs.

     

    Create Table TabelaCliente (CodCli int Identity, Nome VarChar(20) Null)

    Insert Into TabelaCliente Values ('Pedro'), ('Tiago'), ('João'), ('Lucas'), ('Mateus'), ('Marcos')

     

    SET NOCOUNT ON

     

    --Declaração das variáveis que serão utilizadas na recuperação das informações

    Declare @NomeCliente VarChar(20)

     

    --Declaração do cursor, com um nome qualquer, montado com um determinado Select

    Declare cur_Cliente Cursor For

    Select

      Nome

    From

      TabelaCliente

    Where

      (CodCli > 2)

    Order by

      Nome

     

    --Abre o cursor para início das atividades

    Open cur_Cliente

     

    --Vai para o primeiro registro do Select

    Fetch Next From cur_Cliente Into @NomeCliente

     

    --Começa a percorrer o cursor (@@FETCH_STATUS <> 0 significa que terminou)

    While @@FETCH_STATUS = 0

    begin

      --Sequencia de comandos com as informações resgatadas

      Print @NomeCliente

     

      --Segue para o próximo registro do cursor

      Fetch Next From cur_Cliente Into @NomeCliente

    end

     

    --Fecha e desaloca o cursor

    Close cur_Cliente

    Deallocate cur_Cliente

     

    SET NOCOUNT OFF

     

    Roberson Ferreira


    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.



    • Sugerido como Resposta Luiz Phellipe quarta-feira, 4 de maio de 2011 23:44
    • Marcado como Resposta Rafaselic quinta-feira, 5 de maio de 2011 12:37
    quarta-feira, 4 de maio de 2011 22:16
    Moderador