Prepared Statment em Stored Procedure no MySQL
No artigo de hoje, mostro como criar um Prepared Statment dentro de uma Stored Procedure no MySQL.
Outro recurso interessante apresentado é o da concatenação de strings dentro do banco de dados. Teoricamente você pode se perguntar o por que eu resolvi mostrar a concatenação de strings no MySQL nesse mesmo tutorial. O Fato é que certa vez precisei (e preciso constantemente hahaha) criar um esquema de paginação de dados utilizando Stored Procedures. Você que está familiarizado com o MySQL já deve conhecer a cláusula LIMIT, que é fundamental para realizar paginação dos dados. A minha aplicação necessitava passar valores para o banco, dois desses valores eram para indicar a quantidade de registros a serem buscadas (de acordo com a página visualizada), porém me deparei com o seguinte problema (ou talvez bug), o MySQL não aceita concatenação de variáveis ou parâmetros na cláusula LIMIT. A solução que eu encontrei foi concatenar os valores para “setar” a consulta a ser realizada. Com essa string seria criado o prepared statment e seria executado, buscando assim os registros da determinada página.
Talvez em um próximo tutorial eu mostre um exemplo de paginação de dados com PHP e MySQL utilizando stored procedures, por enquanto segue o exemplo da procedure que nomei como sp_prepared.
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_prepared`$$
CREATE PROCEDURE `sp_prepared` (pInicio TINYINT(3), pQtde TINYINT(3))
BEGIN
-- concatena os valores do limit a consulta
SET @vSql = CONCAT('SELECT * FROM tabela LIMIT ', pInicio, ',' , pQtde);
-- cria o prepared statment
PREPARE stmt FROM @vSql;
-- executa o prepared statment
EXECUTE stmt;
-- desaloca a memoria
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
Para executá-la:
-- buscando 10 registros a partir do primeiro CALL `nome_banco`.`sp_prepared`(0, 10);
Posts relacionados:
- Prepared Statments JSP + MySQL
- Prepared Statements MySQL
- Stored Procedures
- Stored Procedures no MySQL
- Por que usar stored procedures? parte 2
Tags: paginacao stored procedure mysql, prepared statment em stored procedure, prepared statments, stored procedure, stored procedures, stored procedures no mysql
Postado em quarta-feira, julho 22nd, 2009 at 19:18 na categoria Dicas, MySQL. Siga o RSS 2.0 feed. You can leave a response, or trackback from your own site.
24/03/2011 as 15:30
Olá, parabéns pelo post…
Gostaria de saber se no MySQL é possível ter 2 ou mais cursores na mesma procedure ???
Até mais…