Criando Stored Procedures no MySQL

A maioria das pessoas não sabe a vantagem de utilizar Stored Procedures, ou simplesmente não conhecem está funcionalida de a sua simplicidade de usar. Nesta matéria eu mostraria com criar Procedures básicas para simplificar tarefas repetivas de acesso a banco.

A maioria das pessoas não utiliza todos os recursos disponíveis para os SGBDs, tais como Stored Procedures e Triggers.

Primeiramente vamos a algumas questões.

O que é uma Stored Procedure?


É uma colação de comandos SQL, que encapsula uma série de tarefas repetitivas, relativas ao acesso a banco, aceita parâmetros de entrada e retorna um valor de status ou conjunto de registros.

Por que usar um Stored Procedure?

  
As Stored Procedures ajudam a reduzir o tráfego na rede, a melhorar o desempenho de consultas, a criar mecanismos de segurança e simplificar o código da aplicação, já que não haverá a necessidade de manter consultas SQL de várias linhas misturadas a toda lógica da sua aplicação.

Então vamos ao banco exemplo:


É um banco bem simples, mas é só para vermos na prática o funcionamento das procedures.
Vamos a primeira, listar países:


DELIMITER $$

DROP PROCEDURE IF EXISTS `listar_paises` $$

CREATE PROCEDURE `listar_paises`(IN _id INT)

BEGIN

      IF(_id IS NULL) THEN

        SELECT * FROM pais;

      ELSE

        SELECT *  FROM pais where id_pais = _id;

      END IF;

   END $$

DELIMITER ;


Vamos a explicação.

DELIMITER $$ – Serve para marcar onde começa e onde termina a procedure, neste caso eu escolhi “$$”
DROP PROCEDURE IF EXISTS `listar_paises` - nesta linha eu informo ao SGBD que se a procedure já existir eu a estarei sobrescrevendo.

CREATE PROCEDURE - irá cria a procedure, note que há um parâmetros para esta procedures. Os parâmetros podem ser IN, apenas de entrada, OUT, apenas de saída e INOUT, entrada e saída. Os tipos de dados dos parâmetros são os mesmo tipos de dados do SGBDs ( INT, VARCHAR(45), TEXT, BLOB...)

Entre os comandos BEGIN e END é que serão colocados os comandos executados pela procedures.
Primeiramente eu verifico se foi passado o parâmetro id para a procedure.

IF(_id IS NULL) THEN


Caso tenha sido passado eu busco um país com aquele id, em caso contrário serão retornados todos os registros da tabela.
Chamando a procedure.

call listar_paises( null );

Irá trazer todos os registros da tabela

call listar_paises( 1 );


Irá trazer somente o registro do país com o ID = 1;

Procedures são tão simples quanto parecem. Coloquei em anexo os códigos fontes do banco com mais algumas procedures caso você queira dar uma olhada. Na próxima matéria eu explicarei como incluir, atualizar e apagar registro do banco usado procedures.

Até a próxima

Recomendamos para você
 

Compartilhe com seus amigos:
Mais de MySQL
  • MySQL - Diferença entre InnoDB e MyISAM
    MySQL - Diferença entre InnoDB e MyISAM
  • MySQL: Como converter InnoDB para MyISAM
    MySQL: Como converter InnoDB para MyISAM
  • Como converter MySQL para Sphinx
    Como converter MySQL para Sphinx
  • Limitações MySQL Parte 4: Um thread por conexão
    Limitações MySQL Parte 4: Um thread por conexão
  • Limitações MySQL Parte 3: Subconsultas
    Limitações MySQL Parte 3: Subconsultas
Compartilhe com seus amigos:
últimos reviews
  • 8,4
    Review Samsung Galaxy K Zoom
    Nessas 2 últimas semanas passou por nossas mãos o potente Galaxy K Zoom, veja o que achamos dele.
  • 8,6
    Review Moto X - Segunda geração
    O aparelho da Motorola é a prova “viva” que o que está ótimo pode melhorar ainda mais.
  • 8,1
    Review Zenfone 5
    Tela de 5 polegadas, câmera de foto e vídeo superiores aos concorrentes, boa usabilidade e preço baixo. A Asus acertou n...

TOPO