Compreenda as STORE PROCEDURES no Mysql
No cenário atual de desenvolvimento estamos cada vez mais preocupados com alguns princípios: A menor escrita de código possível (evitar redundância ao máximo), a centralização da regra de negócio e validação para facilitar a manutenção do projeto, a simplicidade e legibilidade no desenvolvimento do código e para finalizar a menor interdependência de situações no código. Dentro da evolução do desenvolvimento existe uma fase onde partes das regras de negócios estavam localizadas no banco de dados, isto foi possível devido ao recurso da STORE PROCEDURE que são um conjunto de instruções SQL armazenado no servidor. Os dois maiores fatores negativos deste cenário são:
- É o maior poder para o DBA (que agora também fica com a função de programador),
- Aumento na utilização dos recursos no servidor.
ATENÇÃO: Não utilize STORE PROCEDURE para implantação de bibliotecas para serem utilizadas na sua programação por que isto é trabalho para as linguagens de programação, além do mais teria um custo elevado no desempenho de sua aplicação.
De acordo com o manual do MySQL você pode utilizar STORE PROCEDURES neste cenário:
“
a) Quando várias aplicações clientes são escritas em diferentes linguagens ou funcionam em diferentes plataformas, mas precisam realizar as mesmas operações de banco de dados.
b) Quando a segurança é prioritária. Bancos, por exemplo, usam stored procedures para todas as operações comuns. Isto fornece um ambiente consistente e seguro, e procedures podem assegurar que cada operação seja registrada de forma apropriada. Neste tipo de condiguração, aplicações e usuários não conseguiriam nenhuma acesso as tabelas do banco de dados diretamente, mas apenas podem executar stored procedures específicas.
“
Vale ressaltar que há um tempo a Microsoft encorajava o desenvolvimento de suas aplicações com STORE PROCEDURES devido ao esquema de segurança.
A STORE PROCEDURE está presente desde a versão 5 do MySQL e segue a sintaxe do SQL:2003 o mesmo utilizado pelo DB2 da IBM. Após esta explicação, voltemos ao projeto da locadora de DVD e vejamos na prática como implantamos STORE PROCEDURES. Baixe o arquivo do DBDESIGNER e o código de criação das tabelas da locadora:
Tutorial do DER da Vídeo Locadora (4,6 KiB)
Você não tem permissão de fazer download.
Abaixo o DER que iremos trabalhar:
Sintaxe de uma procedure:
CREATE PROCEDURE NOME_DA_PROCEDURE ( tipo_parametro1(Valores possíveis: [ IN | OUT | INOUT ]) parametro1 tipo_dado1(Qualquer tipo válido do mysql(varchar, char, int, date) , [ tipo_parametro2(Valores possíveis: [ IN | OUT | INOUT ]) parametro2 tipo_dado2(Qualquer tipo válido do mysql(varchar, char, int, date) ] ) BEGIN INSTRUCOES SQL; END
Tipos de Parâmetros:
a) IN => Parâmetro de entrada. É passado um valor que vai será utilizado no corpo da procedure;
b OUT =>Parâmetro de saída. Retorna um valor que pode fica armazenado na memória do servidor;
c) INOUT => Possui a funcionalidade de entrada e saída ao mesmo tempo.
Vamos fazer o procedimento de CRUD para a tabela tegenero (idGenero int(autoincremento), NmGenero, FgStatus smallint) da locadora:
Código de Inserção:
DELIMITER $$ CREATE PROCEDURE prInsereGenero (IN strNmGenero varchar(100), intFgStatus smallint) BEGIN INSERT INTO teGenero(NmGenero, FgStatus) VALUES (strNmGenero, intFgStatus); END $$ DELIMITER ;
Código de exclusão:
DELIMITER $$ CREATE PROCEDURE prExcluiGenero (IN intidGenero int) BEGIN DELETE FROM tegenero WHERE idGenero = intidGenero; END $$ DELIMITER ;
Código de Edição:
DELIMITER $$ CREATE PROCEDURE prEditaGenero (IN intIdGenero int, strNmGenero varchar(100), intFgStatus smallint) BEGIN UPDATE tegenero SET NmGenero = strNmGenero , FgStatus = intFgStatus WHERE idGenero = intIdGenero; END $$ DELIMITER ;
Código da Chamada:
CALL prInsereGenero ('Teste A', 0);
CALL prEditaGenero (2, 'Teste B', 1);
CALL prExcluiGenero (1);
Baixe o código fonte aqui:
Exemplo de Store Procedure no Mysql 5 (702 bytes)
Você não tem permissão de fazer download.
| Imprimir artigo | Este artigo foi escrito por Eder Frances em 16 de julho de 2010 às 13:41, e está arquivado em Banco de Dados. Siga quaisquer respostas a este artigo através do RSS 2.0. Você pode deixar uma resposta ou fazer um trackback do seu próprio site. |





há 1 mês atrás
Qual que é a diferença do STORE PROCEDURE e VIEWS? sendo que ambos são procedimentos armazenados no banco.
há 1 mês atrás
Olá Carlos,
Store Procedure permite uma programação no banco de dados. Você pode executar mais de uma instrução SQL, com inclusão, validação e etc. , enquanto a VIEW você pode ter uma visão ampliada do banco de dados ficando limitado a um comando SELECT mais elaborado.
Abraços,
Éder
há 1 mês atrás
Valeu!