Erro com Procedure no MySQL
Boa tarde a todos,
Estou tentando criar uma Procedure no MySQL e tenho esta tabela "Cliente".
CREATE TABLE IF NOT EXISTS cliente (
id_cliente INT(5) AUTO_INCREMENT PRIMARY KEY,
tipo CHAR(1) NOT NULL,
rSocialNome VARCHAR(20) NOT NULL,
cnpjCPF VARCHAR(30) NOT NULL,
ieRG VARCHAR(30),
contato VARCHAR(50),
email VARCHAR(30),
site VARCHAR(30),
dataCadastro DATE,
usuario VARCHAR(30)
)ENGINE=MyISAM;
Tenho outra tabela que é a "Endereço"
CREATE TABLE IF NOT EXISTS `endereco` (
`id_endereco` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`id_cliente` INT(11) NOT NULL,
`logradouro` VARCHAR(20) NOT NULL ,
`rua` VARCHAR(25) NOT NULL ,
`numero` INT(11) NOT NULL ,
`complemento` VARCHAR(40) ,
`bairro` VARCHAR(40) NOT NULL ,
`cidade` VARCHAR(40) NOT NULL ,
`estado` VARCHAR(40) NOT NULL ,
`cep` VARCHAR(9) NOT NULL ,
PRIMARY KEY (`id_endereco`),
constraint fk_endereco_cliente FOREIGN KEY (id_cliente) REFERENCES cliente (id_cliente)
) ENGINE=MyISAM
Para fazer o insert nas duas tabelas eu criei uma procedure, podem quando tento adicionar o MySQL da erro "ALERTA: Erro ao inserir na tabela de pessoas"
DELIMITER $$
CREATE DEFINER=dotinfoc@localhost PROCEDURE cad_cliente(
IN c_tipo CHAR(1),
IN c_rSocialNome VARCHAR(20),
IN c_cnpjCPF VARCHAR(30),
IN c_ieRG VARCHAR(30),
IN c_contato VARCHAR(50),
IN c_email VARCHAR(30),
IN c_site VARCHAR(30),
IN c_logradouro VARCHAR(20),
IN c_rua VARCHAR(25),
IN c_numero INT(11) ,
IN c_complemento VARCHAR(40) ,
IN c_bairro VARCHAR(40),
IN c_cidade VARCHAR(40),
IN c_estado VARCHAR(40),
IN c_cep VARCHAR(9)
)
BEGIN
DECLARE msg VARCHAR(1000) DEFAULT "sem mensagem";
DECLARE excecao SMALLINT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET excecao = 1;
START TRANSACTION;
INSERT INTO cliente (tipo, rSocialNome, cnpjCPF, ieRG, contato, email, site, dataCadastro, usuario)
VALUES (c_tipo, c_rSocialNome, c_cnpjCPF, c_ieRG, c_contato, c_email, c_site);
IF excecao = 1 THEN
SET msg = "ALERTA: Erro ao inserir na tabela de pessoas";
ROLLBACK;
ELSE
SELECT DISTINCT LAST_INSERT_ID() INTO @id_cliente FROM cliente;
IF excecao = 1 THEN
SET msg = "ALERTA: Erro ao buscar o ultimo ID inserido em clientes";
ROLLBACK;
ELSE
INSERT INTO endereco(id_cliente, logradouro, rua, numero, complemento, bairro, cidade, estado, cep) values(@id_cliente, c_logradouro, c_rua, c_numero, c_complemento, c_bairro, c_cidade, c_estado, c_cep);
IF excecao = 1 THEN
SET msg = "ALERTA: Erro ao inserir na tabela de Endereco";
ROLLBACK;
END IF;
END IF;
END IF;
IF excecao <> 1 THEN
COMMIT;
SET msg = "ALERTA: Registro Incluido com sucesso";
END IF;
SELECT msg AS msg;END$$
DELIMITER ;
Discussão (3)
Carregando comentários...