Freelancers BR

Encontre dicas, tutorias e empregos

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:

  1. Prepared Statments JSP + MySQL
  2. Prepared Statements MySQL
  3. Stored Procedures
  4. Stored Procedures no MySQL
  5. Por que usar stored procedures? parte 2

Tags: , , , , ,

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.

Uma resposta to “Prepared Statment em Stored Procedure no MySQL”

  1. 24/03/2011 as 15:30

    Fabiano Souza disse:

    Olá, parabéns pelo post…

    Gostaria de saber se no MySQL é possível ter 2 ou mais cursores na mesma procedure ???

    Até mais…

Deixe seu comentário!