segunda-feira, 25 de março de 2013

MySQL: Como criar e executar Stored Procedures

Stored procedures são procedimentos armazenados, ou seja inserts, updates, deletes ou select que você cria e que armazena para poder executar com parâmetros ou não

Criando Storeds Procedures no MySQL

usaremos como exemplo a tabela venda abaixo


create table venda(
codVenda   int,
data       date,
total      float,
primary key(codvenda)
)



DELIMITER $$

CREATE procedure InserirVenda(cdv int,dt date,tot float)
BEGIN
    insert into itensvenda(codVenda,data,total) 
    values(cdv,dt,tot); 
END$$
DELIMITER ;


EXECUTANDO

call InserirVenda(1,2013-03-03,10)


Fácil! não? 
stored procedure é muito fácil, vc só precisa informar onde ela começa e termina com "DELIMITER $$" dá um nome a ela e entre o begin e o end colocar o que desejar, inserir, deletar, atualizar...

5 comentários:

  1. Obrigado Floriano, ajudou bastante... Já havia passado por N tutoriais, e o seu foi bem direto e claro.

    ResponderExcluir
  2. Este comentário foi removido pelo autor.

    ResponderExcluir
  3. Amigo saberia me ajudar com a sintaxe dessa procedure?

    DELIMITER $$

    CREATE procedure Inserir_Disciplina(@disciplina_nome VARCHAR(45) CHARSET UTF8)
    BEGIN
    IF NOT EXISTS (SELECT * FROM tcc.disciplina WHERE disciplina_nome = @disciplina_nome)
    THEN
    INSERT INTO tcc.disciplina(disciplina_nome)
    VALUES(@disciplina_nome);
    END IF
    END$$
    DELIMITER ;

    ResponderExcluir
    Respostas
    1. sim, mas por favor me mostra a tabela para eu poder verificar os parâmetro e montar direitinho para você, pois no seu insert aparentemente falta alguns campos

      Excluir
  4. CREATE TABLE `disciplina` (
    `disciplina_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `disciplina_nome` varchar(64) NOT NULL,
    PRIMARY KEY (`disciplina_id`),
    UNIQUE KEY `disciplina_nome` (`disciplina_nome`)
    ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;

    ResponderExcluir