CADASTRE-SE

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.

Ramon Ferreira Silva
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

Leia a seguir: Script para sincronizar estruturas de BD MySQL


Relacionados:

Comente:

TOPO