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:
- Stored Procedures
- Por que usar stored procedures? parte 2
- Prepared Statment em Stored Procedure no MySQL
- Por que usar Stored Procedures?
- O que a Oracle fará com MySQL ?
Tags: MySQL, stored procedure, stored procedures, stored procedures no mysql
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.
13/04/2009 as 9:40
Obrigado pela dica.
Nunca lembro de cabeça alguns detalhes de funções e procedures no MySQL.
Abraços.
10/06/2009 as 13:23
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á!
10/06/2009 as 14:23
Luiz,
como vc está executando a procedure? qual IDE para MySQL você está utilizando?
4/11/2009 as 10:56
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.
4/11/2009 as 11:20
No caso chama o procedimento por “CALL sp_teste()”?? estou usando o phpmyadmim. mas ta dando erro
4/11/2009 as 21:42
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.
9/11/2011 as 20:23
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?
17/11/2011 as 16:45
fernando,
vc está tentando acessar via php?
17/11/2011 as 19:58
oi Lucas, estou usando o Codeigniter MVC para pHP