Freelancers BR

Encontre dicas, tutorias e empregos

Stored Procedures no MySQL

Continuando com um assunto muito interessante referente à banco de dados, mais precisamente Stored Procedures, hoje vou abordar os procedimento no banco de dados que eu mais gosto, o MySQL.
O MySQL é um banco de dados open source, tem como característica principal a performance, é extremamente rápido. Suas tabelas possuem engines, até a versão 5 a engine padrão costuma ser a MyISAM, ela é a de melhor performance. Quando se tem um banco de dados de médio a grande porte recomenda-se utilizar a engine InnoDb, pois possui mais recursos que a MyISAM, como integridade referencial (pks e fks), suporte a transações, além de ser mais robusta e etc. Se não estou engano a engine InnoDb foi criada ou tem alguma relação com o pessoal da Oracle. Foram lançadas há um tempo atrás mais duas engines Maria e Falcon.
O recurso de Stored Procedures foi incorporado ao MySQL à partir da versão 5, que na opinião de muitas pessoas, foi quando o MySQL entrou para a lista dos grandes bancos de dados.
Para criar Stored Procedures no MySQL eu custumo utilizar a ferramenta MySQL Query Browser que pode ser baixada no site do MySQL http://dev.mysql.com/downloads/gui-tools/ .

Abaixo apresento um simples exemplo de uma procedure que faz um SELECT em uma tabela:

– troca o delimitador de linhas, que no caso é o ; para $$, pois na programação do procedimento é preciso utilizar o ; no fim de cada instrução
DELIMITER $$

– cria o procedimento com nome de sp_teste para o banco test
CREATE PROCEDURE `test`.`sp_teste` ()

– começa o procedimento
BEGIN

– o código do procediemento
  SELECT * FROM tabela;

– fim do procedimento
END $$

– altera novamente o delimitador de instruções do banco para ;
DELIMITER ;

Essa procedure iria retornar o valor do resultado do SELECT na tabela, isso foi apenas um simplícimo exemplo, os procedimentos possuem recursos fantásticos que possibilitam criar códigos simples e de fácil manutenção.

Recomendo a leitura do livro MySQL Guia do Programador

Posts relacionados:

  1. Stored Procedures
  2. Por que usar stored procedures? parte 2
  3. Prepared Statment em Stored Procedure no MySQL
  4. Por que usar Stored Procedures?
  5. O que a Oracle fará com MySQL ?

Tags: , , ,

Postado em sábado, março 28th, 2009 at 20:38 na categoria MySQL. Siga o RSS 2.0 feed. You can leave a response, or trackback from your own site.

9 Respostas to “Stored Procedures no MySQL”

  1. 13/04/2009 as 9:40

    Carlos A. Junior disse:

    Obrigado pela dica.

    Nunca lembro de cabeça alguns detalhes de funções e procedures no MySQL.

    Abraços.

  2. 10/06/2009 as 13:23

    Luiz Eduardo disse:

    Prezado,

    Estou utilizando o banco MySQL com procedures, e ao executar uma procedure com um retorno de um select, o banco dá um retorno de erro: “#1312 – PROCEDURE aplicacao.sp_fun_carregar_layout can’t return a result set in the given context”
    você sabe o que é isso?
    minha procedure somente chama um select como a sua…
    Agradeço desde já!

  3. 10/06/2009 as 14:23

    Lucas Renan disse:

    Luiz,

    como vc está executando a procedure? qual IDE para MySQL você está utilizando?

  4. 4/11/2009 as 10:56

    Diogo freitas disse:

    Olá, estou tendo um problema q não estou entendo. Eu fiz um procedure bem simples:

    CREATE PROCEDURE `test`.`sp_tes`()
    BEGIN

    SELECT * FROM nova;

    END

    Quando eu coloco um comando INSERT ele funciona perfeitamente, mas qd coloco qualquer comando SELECT ela da uma erro:

    Erro:

    consulta SQL:

    SELECT DATABASE( ) AS ‘db’;

    Mensagens do MySQL : Documentação
    #2014 – Commands out of sync; you can’t run this command now

    Não sei porque ele da um erro assim, este procedimento eu criei somente como teste para um procedimento q vou fazer. Ahh e já testei a sql do Select fora do procedure e funcionou perfeitamente.

    Já tentei de tudo, coloquei no sql ate assim SELECT nome_r AS nome FROM nova; e da o mesmo erro. Alguém sabe o que este erro significa e como posso solucionar meu problema.

  5. 4/11/2009 as 11:20

    Marcos Vieira disse:

    No caso chama o procedimento por “CALL sp_teste()”?? estou usando o phpmyadmim. mas ta dando erro

  6. 4/11/2009 as 21:42

    Lucas Renan disse:

    Diogo, Marcos,

    Se não me engano, não é possível executar as procedures via PHPMyAdmin, tentem com o MySQL Query Browser por exemplo.
    Se não resolver, perguntem novamente.

  7. 9/11/2011 as 20:23

    Fernando disse:

    Olá, muito bom o Artigo,

    Queria uma ajuda se possível, Minhas SP estão retornando um erro
    Error Number: 2014

    Commands out of sync; you can’t run this command now

    call pr_select_curso_alterar(8);

    Pode me ajudar?

  8. 17/11/2011 as 16:45

    lucas disse:

    fernando,

    vc está tentando acessar via php?

  9. 17/11/2011 as 19:58

    Fernando disse:

    oi Lucas, estou usando o Codeigniter MVC para pHP

Deixe seu comentário!