none
Cursores SQL server 2008 R2 RRS feed

Respostas

  • Olá Abreu,

    Os cursores são utilizados em tratativas de dados, aonde é necessário fazer algum tipo de alteração no resultado, no qual você não conseguira fazer através de um SELECT, como por exemplo, atender uma determinada condição para fazer um calcula ou tratar o registro para inserção em outra tabela.

    Abaixo um exemplo do link http://msdn.microsoft.com/pt-br/library/ms180169.aspx, comentado por mim:

    DECLARE @vendor_id int, @vendor_name nvarchar(50); --Declare as variáveis que você vai utilizar em sua consulta
    
    DECLARE vendor_cursor CURSOR FOR --Declare o cursor e insira a consulta que você deseja trabalhar
    SELECT VendorID, Name
    FROM Purchasing.Vendor
    WHERE PreferredVendorStatus = 1
    ORDER BY VendorID;
    
    OPEN vendor_cursor --Inicio o cursor 
    
    FETCH NEXT FROM vendor_cursor --Alimenta as variáveis declaradas acima, com o primeiro registro da consulta
    INTO @vendor_id, @vendor_name
    
    WHILE @@FETCH_STATUS = 0 --Inicia o laço de repetição para leitura dos registros da consulta.
    BEGIN--Entre o Begin e o End você faz a tratativa que deseja dos dados que a consulta gerou
        
    	PRINT @vendor_id  --Imprime o valor atual da varíavel, neste caso o registro que esta sendo lido no momento
    	PRINT @vendor_name --Imprime o valor atual da varíavel, neste caso o registro que esta sendo lido no momento
        
        FETCH NEXT FROM vendor_cursor -- Alimenta as variáveis novamente, mais agora com o próximo registro da consulta
        INTO @vendor_id, @vendor_name
    END 
    CLOSE vendor_cursor;--Fecha o cursor.
    DEALLOCATE vendor_cursor;--Remove uma referência de cursor ou seja libera o curso


    Dasio Giovanni - Analista de Sistema

    sexta-feira, 6 de junho de 2014 12:29
  • Bom dia Abreu,

    Segue alguns links que você pode utilizar como auxílio em seu estudo de cursores:

    Documentação Microsoft: http://msdn.microsoft.com/pt-br/library/ms180169.aspx

    Artigo da DevMedia: http://www.devmedia.com.br/cursores-no-sqlserver/5590

    Att, Bruno Silva.


    Att, Bruno Silva.

    sexta-feira, 6 de junho de 2014 12:45

Todas as Respostas

  • Olá Abreu,

    Os cursores são utilizados em tratativas de dados, aonde é necessário fazer algum tipo de alteração no resultado, no qual você não conseguira fazer através de um SELECT, como por exemplo, atender uma determinada condição para fazer um calcula ou tratar o registro para inserção em outra tabela.

    Abaixo um exemplo do link http://msdn.microsoft.com/pt-br/library/ms180169.aspx, comentado por mim:

    DECLARE @vendor_id int, @vendor_name nvarchar(50); --Declare as variáveis que você vai utilizar em sua consulta
    
    DECLARE vendor_cursor CURSOR FOR --Declare o cursor e insira a consulta que você deseja trabalhar
    SELECT VendorID, Name
    FROM Purchasing.Vendor
    WHERE PreferredVendorStatus = 1
    ORDER BY VendorID;
    
    OPEN vendor_cursor --Inicio o cursor 
    
    FETCH NEXT FROM vendor_cursor --Alimenta as variáveis declaradas acima, com o primeiro registro da consulta
    INTO @vendor_id, @vendor_name
    
    WHILE @@FETCH_STATUS = 0 --Inicia o laço de repetição para leitura dos registros da consulta.
    BEGIN--Entre o Begin e o End você faz a tratativa que deseja dos dados que a consulta gerou
        
    	PRINT @vendor_id  --Imprime o valor atual da varíavel, neste caso o registro que esta sendo lido no momento
    	PRINT @vendor_name --Imprime o valor atual da varíavel, neste caso o registro que esta sendo lido no momento
        
        FETCH NEXT FROM vendor_cursor -- Alimenta as variáveis novamente, mais agora com o próximo registro da consulta
        INTO @vendor_id, @vendor_name
    END 
    CLOSE vendor_cursor;--Fecha o cursor.
    DEALLOCATE vendor_cursor;--Remove uma referência de cursor ou seja libera o curso


    Dasio Giovanni - Analista de Sistema

    sexta-feira, 6 de junho de 2014 12:29
  • Bom dia Abreu,

    Segue alguns links que você pode utilizar como auxílio em seu estudo de cursores:

    Documentação Microsoft: http://msdn.microsoft.com/pt-br/library/ms180169.aspx

    Artigo da DevMedia: http://www.devmedia.com.br/cursores-no-sqlserver/5590

    Att, Bruno Silva.


    Att, Bruno Silva.

    sexta-feira, 6 de junho de 2014 12:45