Criando Storeds Procedures no MySql – Parte II

Dando continuidade à matéria anterior Criando Storeds Procedures no MySql. Nesta matéria eu mostrarei a vocês como alterar os dados no banco, seja com inserção de novos registros, atualização ou exclusão de registros pré-existentes.

Criando Storeds Procedures no MySql – Parte II

Dando continuidade à matéria anterior Criando Storeds Procedures no MySql. Nesta matéria eu mostrarei a vocês como alterar os dados no banco, seja com inserção de novos registros, atualização ou exclusão de registros pré-existentes.
Vamos a primeira procedure que trata da exclusão de um registro.

DELIMITER $$
DROP PROCEDURE IF EXISTS `excluir_cidades` $$
CREATE PROCEDURE `excluir_cidades`(IN _id INT)
BEGIN
DELETE FROM cidade WHERE id_cidade = _id;
SELECT ROW_COUNT();
END $$
DELIMITER ;


A novidade nesta procedure é a adição do comando

SELECT ROW_COUNT();


Este comando retorna a quantidade de linhas que foram afetadas pelo comando anterior. Assim podemos ter um controle maior sobre a operação realizada, ou apenas para nos manter informados do que ocorreu de fato. Por exemplo, se a procedure me retornar o Valor 1, significa que eu consegui excluir o registro, caso retorne 0 a exclusão pode ter sido falha.
Para realizar uma atualização a procedure é muito parecida.

DELIMITER $$
DROP PROCEDURE IF EXISTS `atualizar_cidades` $$
CREATE PROCEDURE `atualizar_cidades`(

IN _id INT,
IN _nome VARCHAR(45),
IN _populacao BIGINT,
IN pais INT )
BEGIN
UPDATE cidade SET nome = _nome, populacao = _populacao , pais = _pais WHERE id_cidade = _id;
SELECT ROW_COUNT();
END $$
DELIMITER ;



Vocês podem perceber que a procedure é praticamente a mesma, exceto pelo fato de que ao invés de excluir nós estamos atualizando um registro.
Agora vamos à inserção.
DELIMITER $$

DROP PROCEDURE IF EXISTS `inserir_cidade` $$
CREATE PROCEDURE `inserir_cidade`(

IN _nome VARCHAR(45),
IN _populacao BIGINT,
IN pais INT )
BEGIN
INSERT INTO cidade (nome,populacao, pais) VALUES (_nome, _populacao, _pais);
SELECT LAST_INSERT_ID();
END $$
DELIMITER ;


A inserção segue a mesma formula das anteriores, mas como você pode perceber agora, nós trocamos o

SELECT ROW_COUNT();


Por

    SELECT LAST_INSERT_ID();


Assim poderemos ter de volta o identificador (chave) da linha inserida o que muito útil na maioria dos sistemas.
Agora eu mostrarei uma variante das procedures de inserir e atualizar.

DELIMITER $$
DROP PROCEDURE IF EXISTS `inserir_atualizar_cidade` $$
CREATE PROCEDURE `inserir_atualizar_cidade`(
IN _id INT,
IN _nome VARCHAR(45),
IN _populacao BIGINT,
IN pais INT )
BEGIN
REPLACE INTO cidade VALUES ( _id, _nome,_populacao, _pais);
IF( _id IS NOT NULL ) THEN
SELECT ROW_COUNT();
ELSE
SELECT LAST_INSERT_ID();
END IF;
END $$
DELIMITER ;


Nesta procedure nós utilizamos o comando curinga

REPLACE INTO


Que faz a função tanto de inserir quanto de atualizar.
Se chamarmos

call inserir_atualizar_cidade( null, ‘Recife’,200000,1);


Estaremos inserindo um novo registro no banco de dados, agora se chamarmos

call inserir_atualizar_cidade( 1, ‘Recife’,200000,1);


Nós estaremos atualizando o registro no banco com o id_cidade igual a 1. Caso não exista uma cidade com este id, será criado um novo registro com o id = 1.
Espero que vocês tenham gostado desta pequena série de artigos sobre Storeds Procedures, e que isso possa ajudá-los. Storeds Procedures vão muito além do que foi mencionado aqui, mas na maioria das vezes utilizaremos o que acabamos de ver. Deixarei para vocês mais algumas procedures no arquivo em anexo para que vocês possam estudá-las um pouco mais.
Até a próxima. Ramon Silva www.ramonsilva.net

Poco F3, Poco X3 Pro ou Poco X3 GT: Qual tem a melhor bateria?

Conteúdo relacionado

POCO M3, celular de entrada ainda aguenta os jogos? | Roda Liso ENTRADA
Roda Liso

POCO M3, celular de entrada ainda aguenta os jogos? | Roda Liso ENTRADA

Estamos dando boas vindas ao primeiríssimo episódio do Roda Liso de Entrada, somente com smartphones leves, revisitando o clássico POCO M3.

Novo curso: Criando Sistemas com Dreamweaver CS6 PHP e MYSQL
Programação

Novo curso: Criando Sistemas com Dreamweaver CS6 PHP e MYSQL

Você escolheu o Curso Criando Sistemas com Dreamweaver CS6 PHP e MYSQL como sendo o eleito para entrar esta semana no Oficina da Net PREMIUM.

Minha primeira conexão PHP com banco de dados MySQL cPanel
Programação

Minha primeira conexão PHP com banco de dados MySQL cPanel

Um tutorial passo a passo pra ensinar como fazer a primeira conexão PHP com o banco de dados do MySQL cPanel.