Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 



 

Aprenda inglês em casa

Baixe gratuitamente as duas primeiras aulas

English for Reading and Listening

Receba por email, diariamente, mensagens contendo materiais para leitura e audição, incluindo arquivos no formato MP3 gravados por falantes nativos.

Saiba mais e faça sua inscrição

Cursor

Por André Milani

Data de Publicação: 12 de Janeiro de 2007

Cursor é um recurso bastante interessante em bancos de dados pois permite que seus códigos SQL façam uma varredura de uma tabela ou consulta linha-por-linha, realizando mais de uma operação se for o caso.

Na maioria das vezes, um simples SELECT exibe na tela esta varredura, trazendo todos os registros da consulta em questão. A vantagem de usar um cursor é quando, além da exibição dos dados, queremos realizar algumas operações sobre os registros. Se o volume de operações for grande, fica muito mais fácil, limpo e prático escrever o código utilizando cursor, do que uma consulta SQL.

Por exemplo: É muito mais vantajoso criar um cursor que faça a análise de cada produto de estoque, conferindo seu histórico, calculando sua previsão de vendas para o próximo mês, capturando o melhor cliente que já o comprou, etc, do que criar um SELECT absurdamente grande que talvez não consiga ainda todas as informações de forma simples.

Para utilizar um cursor, analise o código-fonte a seguir, onde são mostrados e comentados passo-a-passo a criação de um cursor e sua chamada. O objetivo do cursor apresentado a seguir é de somar a kilometragem atual de todos os veículos de um banco de dados fictício.

IMPORTANTE: O exemplo a seguir é meramente didático, seu resultado poderia ser obtido com um SELECT simples de soma (função SUM()).

Se desejar executar este código em seu MySQL, copie-o e cole-o em um arquivo do tipo '.sql', e execute-o no terminal desta forma: mysql> source <caminho do arquivo>;

Código fonte

  CREATE DATABASE TUTORIAL_CURSOR;
  USE TUTORIAL_CURSOR;
  
  CREATE TABLE VEICULOS(
  VEICULO varchar(32) NOT NULL,
  KILOMETRAGEM int NOT NULL
  );
  
  INSERT INTO VEICULOS (VEICULO, KILOMETRAGEM) VALUES ('Carro 1',  '5230');
  INSERT INTO VEICULOS (VEICULO, KILOMETRAGEM) VALUES ('Carro 2',  '7800');
  INSERT INTO VEICULOS (VEICULO, KILOMETRAGEM) VALUES ('Carro 3', '16540');
  INSERT INTO VEICULOS (VEICULO, KILOMETRAGEM) VALUES ('Carro 4', '32230');
  
  DROP PROCEDURE IF EXISTS TUTORIAL_CURSOR.SomaKilometragem;
  
  DELIMITER $$
  CREATE PROCEDURE TUTORIAL_CURSOR.SomaKilometragem (OUT resultado INT)
  BEGIN
  
  -- Definição de variáveis utilizadas na Procedure
  DECLARE existe_mais_linhas INT DEFAULT 0;
  DECLARE kilometros INT DEFAULT 0;
  DECLARE total_de_kilometros INT DEFAULT 0;
  
  -- Definição do cursor
  DECLARE meuCursor CURSOR FOR SELECT KILOMETRAGEM FROM VEICULOS;
  
  -- Definição da variável de controle de looping do cursor
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET existe_mais_linhas=1;
  
  -- Abertura do cursor
  OPEN meuCursor;
  
  -- Looping de execução do cursor
  meuLoop: LOOP
  FETCH meuCursor INTO kilometros;
  
  -- Controle de existir mais registros na tabela
  IF existe_mais_linhas = 1 THEN
  LEAVE meuLoop;
  END IF;
  
  -- Soma a kilometragem do registro atual com o total acumulado
  SET total_de_kilometros = total_de_kilometros + kilometros;
  
  -- Retorna para a primeira linha do loop
  END LOOP meuLoop;
  
  -- Setando a variável com o resultado final
  SET resultado = total_de_kilometros;
  
  END $$
  
  DELIMITER ;
  
  CALL SomaKilometragem(@variavel_temporaria);
  SELECT @variavel_temporaria;

O resultado final para este cursor é o seguinte:

  +----------------------+
  | @variavel_temporaria |
  +----------------------+
  | 61800                |
  +----------------------+

André Milani é autor do livro MySQL - Guia do Programador, da editora Novatec, um livro que indica ao leitor todos os passos necessários para conhecer e utilizar esta ferramenta da melhor maneira possível, partindo do básico, para quem não teve ainda nenhum contato com o MySQL, até o nível avançado, servindo como um guia de referência para administradores, por meio de explicações claras e objetivas complementadas com exemplos práticos para cada situação de uso. Destinado a administradores de bancos de dados, programadores, estudantes e a todos que se interessam pelo assunto.

Para saber mais sobre o livro, acesse: http://www.novateceditora.com.br/livros/mysqlcompleto

Recomende este site
Recomendar este artigo

Opinião dos Leitores

*Nome:
Email:
Me notifique sobre novos comentários nessa pagina
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

Artigos Publicados


Para se manter atualizado sobre as novidades desta coluna, consulte sempre o newsfeed RSS

Desenvolverde RSS

Para saber mais sobre RSS, leia o artigo O Padrão RSS - A luz no fim do túnel.