quinta-feira, 23 de abril de 2009

Como fazer um cursor no Sql Server

Para percorrer registros de uma tabela ou query, podemos utilizar a funcionalidade do Sql Server de criação de cursor. Abaixo um exemplo:


CREATE TABLE #teste ( 
  id   INT, 
  nome VARCHAR(50), 
  data DATETIME) 

INSERT #teste 
      (id, 
       nome, 
       data) 
VALUES(1,'Joao','2008-01-01') 

INSERT #teste 
      (id, 
       nome, 
       data) 
VALUES(1,'Maria','2008-02-01') 

INSERT #teste 
      (id, 
       nome, 
       data) 
VALUES(1,'Mane','2008-03-01') 

DECLARE  @id INT 

DECLARE  @nome VARCHAR(50) 

DECLARE  @data DATETIME 

DECLARE db_cursor CURSOR  FOR 
SELECT * 
FROM   #teste 

OPEN db_cursor 

FETCH NEXT FROM db_cursor 
INTO @id, 
     @nome, 
     @data 

WHILE @@FETCH_STATUS = 0 
  BEGIN 
    PRINT ('CODIGO:' + Cast(@ID AS VARCHAR(5)) + ' NOME:' + @NOME + ' DATA:' + Cast(@DATA AS VARCHAR(25))) 
     
    FETCH NEXT FROM db_cursor 
    INTO @id, 
         @nome, 
         @data 
  END 

CLOSE db_cursor 

DEALLOCATE db_cursor 

DROP TABLE #teste

No exemplo acima, criamos uma tabela temporária, e usamos o comando "print" para exibir os dados da tabela, percorrendo os registros através de um cursor.

2 comentários:

  1. Fala Fera!

    Parabéns pelo blog. É bom lembrar que cursores devem ser sempre aquela úúúúúúúltima opção, por cuasa da performance..

    Abraços!

    Zé Filipe

    ResponderExcluir
  2. Com certeza Filipe, bem lembrado.

    Cursores podem ser uma solução para diversos problemas, mas quando o objetivo é performance, o melhor é procurar outras alternativas.

    ResponderExcluir

Leave your comment here!