Prepared Statements no MySQL

Para quem adora padronização e organização, no MySQL existe o recurso chamado Prepared Statements. Imagine a seguinte situação: você precisa criar uma procedure que faça todas as consultas em todas as entidades do seu banco e outra que apenas inserções e assim por diante… Uma para cada DML (data manipulation language) tudo passando por parametros, esse

Para quem adora padronização e organização, no MySQL existe o recurso chamado Prepared Statements.

Imagine a seguinte situação: você precisa criar uma procedure que faça todas as consultas em todas as entidades do seu banco e outra que apenas inserções e assim por diante… Uma para cada DML (data manipulation language) tudo passando por parametros, esse é o statement prepare.

Resumidamente você prepara a query antes de executa-lá no banco de dados, então vamos colocar a mão na massa e mostrar esse recurso.

Criando o usuário

O primeiro passo é criar um usuário no banco de dados que tenha permissão para executar rotinas. Eu que trabalho sempre com stored procedures utilizo apenas o EXECUTE, mas se você trabalha com DMLs diretas nas aplicações, pode criar diversas permissões ou um usuário com todos os privilégios (ALL PRIVILEGES).

Segue abaixo o exemplo de EXECUTE:

Segue abaixo o exemplo de um ALL PRIVILEGES:

ESSES FORAM OS COMANDOS PARA CRIAR UM USUARIO:

GRANT – CRIA USUARIO

EXECUTE – EXECUTA APENAS ROTINAS

ALL PRIVILEGES – PERMITE EXECUTAR TUDO NO BANCO DE DADOS

*.* – O PRIVILEGIO APLICA-SE A TODAS AS BASES

IDENTIFIED BY – É A SUA SENHA

WITH GRANT OPTION – O USUARIO PODE CRIAR DIVERSOS USUARIOS E CONCEDER PRIVILEGIOS A ELE.

Sinceramente eu aconselho trabalhar com o EXECUTE. Com ele é difícil de tentarem injection sql.

Agora que criamos o usuario layo.azevedo@localhost vou criar uma procedure com a função de executar qualquer select no MySQL, começando com o delimitador do código para não parar quando o MySQL achar o sinal de ‘;’ (ponto vírgula):

Dentro do DELIMITER colocamos a procedure com o nome de SelectGeral com três parâmetros: nome da tabela, condição e valor:

1 – Chamarei tabela de p_tabela, condição de p_condicao e valor de p_valor (lembre-se que o MySQL é fortemente tipado então coloque o tipo se é VARCHAR, CHAR, INT, etc…)

Proximo passo é criar uma variável para executar a query dentro do banco. Nesse caso usaremos o SET juntamente com o comando CONCAT para concatenarmos os dados.

O último passo é executar a variável:

Pronto criamos a procedure SelectGeral com o Prepared Statements. Para visualizar basta executar o seguinte comando:

Ou seja seria essa query = SELECT * from usuario WHERE  nome = ‘layo.azevedo’

Esse foi um exemplo bem básico, mostrando o caminho das pedras para iniciantes que tenham alguma dúvida sobre Prepared Statements.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *