Archive for the ‘Tutorial Stored Procedures’ Category

Stored Procedures em Mysql - Buscar

Thursday, September 6th, 2007

Continuando os artigos da serie Stored Procedures, vamos buscar registros de nossa base de testes.
Criar o banco de estudos:

   CREATE DATABASE estudo1;
   USE estudo1;

Criar a tabela de estados:

   CREATE TABLE tb_estado(
      est_id tinyint not null primary key,
      est_uf CHAR(2) not null,
      est_nome CHAR(30) not null)
   ENGINE=MyIsam;

Criar a Stored procedure para buscar os registros:

   DELIMITER $$
  CREATE  PROCEDURE `sp_estado_buscar`(IN var_busca VARCHAR(255))
  BEGIN
	PREPARE smt1 FROM “SELECT est_id,est_nome,est_uf  FROM tb_estado WHERE est_nome LIKE ?”;
	SET @strBusca = var_busca;
	EXECUTE smt1 USING @strBusca;
  END $$

Vamos executar a SP agora:

   CALL sp_estado_buscar(”%para%”);

Pronto, temos sp’s suficiente spara trabalhar com uma tabela, Inserindo,editando,excluindo, listando e buscando. Na próxima SP vou falar de cursores.

Stored Procedures em Mysql - Listar

Thursday, August 30th, 2007

Continuando os artigos da serie Stored Procedures, vamos listar os registros de nossa base de testes.
Criar o banco de estudos:

   CREATE DATABASE estudo1;
   USE estudo1;

Criar a tabela de estados:

   CREATE TABLE tb_estado(
      est_id tinyint not null primary key,
      est_uf CHAR(2) not null,
      est_nome CHAR(30) not null)
   ENGINE=MyIsam;

Criar a Stored procedure para listar os registros:

   DELIMITER $$
     CREATE PROCEDURE sp_estado_listar(IN var_id TINYINT)
     BEGIN
      IF(var_id IS NULL) THEN
        SELECT est_id,est_nome,est_uf FROM tb_estado;
      ELSE
        SELECT est_id,est_nome,est_uf  FROM tb_estado where EST_ID=VAR_ID;
      END IF;
   END $$

Vamos executar a SP agora:

   CALL sp_estado_listar(null);

É claro que poderia ser melhor mas funciona, na próxima SP, a de busca, vamos utilizar Prepared Statements ;-).

Stored Procedures em Mysql - Excluir

Thursday, August 30th, 2007

Continuando os artigos da serie Stored Procedures, vamos excluir um registro de nossa base de testes.
Criar o banco de estudos:

   CREATE DATABASE estudo1;
   USE estudo1;

Criar a tabela de estados:

   CREATE TABLE tb_estado(
      est_id tinyint not null primary key,
      est_uf CHAR(2) not null,
      est_nome CHAR(30) not null)
   ENGINE=MyIsam;

Criar a Stored procedure para excluir um registro:

   DELIMITER $$
    CREATE PROCEDURE sp_estado_excluir(IN var_id TINYINT)
    BEGIN
       DELETE FROM tb_estado WHERE est_id = var_id;
    END $$

Vamos executar a SP agora:

   CALL sp_estado_excluir(1);

Foi até mais simples que a primeira. mas a SP de busca, vocês vão gostar. aguardem.

Stored Procedures em Mysql - Inserir e editar

Wednesday, August 29th, 2007

Vou dar início a uma série de artigos falando de Stored Procedures, Functions, triggers e views, depois vamos modelar, Programar e Tunar um banco usando essas funções.

Criar o banco de estudos:

   CREATE DATABASE estudo1;
   USE estudo1;

Criar a tabela de estados:

   CREATE TABLE tb_estado(
      est_id tinyint not null primary key,
      est_uf CHAR(2) not null,
      est_nome CHAR(30) not null)
   ENGINE=MyIsam;

Criar a Stored procedure para incluir ou editar um registro:

   DELIMITER &&
     CREATE PROCEDURE sp_estado_inserir (
	IN var_id TINYINT,
	   var_uf CHAR(2),
	   var_nome CHAR(30))
      BEGIN
        REPLACE INTO tb_estado VALUES (var_id,var_uf,var_nome);
      END
   &&

Muito simpes não?
A função DELIMITER, troca o ‘;’ por outra coisa, apra que você possa executar comandos que levem o ‘;’.
Create procedure ‘nome da função’
( aqui, dentro dos parênteses é o seguinte:)
Tipo das variaveis:
IN - Variaveis de entrada
OUT - Variaveis de Saida
INOUT - As 2 coisas.
Não se exqueça que as variaveis precisam levar os tipos de dados VAR_ID TINYINT ( e esse tipo deve ser igual ao tipo na tabela )
Begin - Inicia a procedure
-> aqui no meio vai a instrução SQL, ou uma função.
O Replace, Insere ou substitui um registro, sem a necessidade de usar o UPDATE
End - Finaliza a procedure
&& Fecha o Delimitador escolhido.
Agora vamos chamar a Stored Procedure:

  call sp_estado_inserir(1,’PR’,'PARANÁ’);

Pronto, Paraná inserido.
Todos os exemplos foram executados no Mysql Query Browser, notem que o ID da tabela nao é auto incremento, isso será motivo de um novo post. o proximo sera uma sp para criar um auto_incremento na unha, buscar registros, e excluir.

Obrigado a todos os comments, coloquei no padrão agora ;-)