none
O que são cursores? RRS feed

  • Pergunta

  • Eu gostaria de entender o que é um cursor. Alguém pode me dar uma dica?
    André Corrêa
    ANALISTA DE SISTEMAS
    (Em aprendizado de .NET)
    segunda-feira, 29 de novembro de 2010 20:05

Respostas

  • Veja esse artigo sobre cursores .
    • Marcado como Resposta Harley Araujo quarta-feira, 1 de dezembro de 2010 11:38
    terça-feira, 30 de novembro de 2010 00:37
  • Olá André,

    Complementando a informação do colega, o cursor vai varrer um certo numero de registros que vc definirá através de um select. Onde o cursor montado irá alterar registro a registro atribuído em algumas variaveis.

    A sintaxe é a seguinte:

    DECLARE @VAR VARCHAR(100)
    DECLARE @VAR1 INT

    DECLARE TESTE CURSOR FOR

    SELECT NOME, ID FROM TABELA WHERE......

    OPEN TESTE
    FETCH NEXT FROM TESTE INTO @VAR, @VAR1
    WHILE (@@FETCH_STATUS = 0)

    BEGIN

    UPDATE TABELA SET NOME = @VAR, ID = @VAR1 WHERE.....
    INSERT INTO......

    FETCH NEXT FROM TESTE INTO @VAR, @VAR1
    END

    CLOSE TESTE
    DEALLOCATE TESTE

    Att.,


    Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.
    • Marcado como Resposta Harley Araujo quarta-feira, 1 de dezembro de 2010 11:38
    terça-feira, 30 de novembro de 2010 02:21

Todas as Respostas

  • Veja esse artigo sobre cursores .
    • Marcado como Resposta Harley Araujo quarta-feira, 1 de dezembro de 2010 11:38
    terça-feira, 30 de novembro de 2010 00:37
  • Olá André,

    Complementando a informação do colega, o cursor vai varrer um certo numero de registros que vc definirá através de um select. Onde o cursor montado irá alterar registro a registro atribuído em algumas variaveis.

    A sintaxe é a seguinte:

    DECLARE @VAR VARCHAR(100)
    DECLARE @VAR1 INT

    DECLARE TESTE CURSOR FOR

    SELECT NOME, ID FROM TABELA WHERE......

    OPEN TESTE
    FETCH NEXT FROM TESTE INTO @VAR, @VAR1
    WHILE (@@FETCH_STATUS = 0)

    BEGIN

    UPDATE TABELA SET NOME = @VAR, ID = @VAR1 WHERE.....
    INSERT INTO......

    FETCH NEXT FROM TESTE INTO @VAR, @VAR1
    END

    CLOSE TESTE
    DEALLOCATE TESTE

    Att.,


    Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.
    • Marcado como Resposta Harley Araujo quarta-feira, 1 de dezembro de 2010 11:38
    terça-feira, 30 de novembro de 2010 02:21
  • André,

    Adicionando mais um pouco de informação... verifique a real necessidade de se fazer cursores, eles parecem tentadores pela facilidade de resolver determinadas situações mas o cursor executa cada acção serializada... e você pode ter baixa performance também...

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    terça-feira, 30 de novembro de 2010 13:33
    Moderador