Quando uso a PROCEDURE Não retorna o último ID do Funcionario…que desejo cadastrar…
CREATE DEFINER=root
@localhost
PROCEDURE sp_func_save
(
pnome_completo VARCHAR(90),
pgenero VARCHAR(9),
pdata_nascimento DATE,
pmorada VARCHAR(90),
pnome_pai VARCHAR(90),
pnome_mae VARCHAR(90),
ptelefone01 INT,
ptelefone02 INT,
pemail VARCHAR (80),
pdata_contrato DATE,
pcarga_horaria MEDIUMTEXT,
pespecialidade VARCHAR(90),
pid_Categoria INT,
pusuario VARCHAR (35),
psenha VARCHAR (226),
pnivel TINYINT(4)
)
BEGIN
DECLARE vidpessoa INT;
DECLARE vidfuncionario INT;
INSERT INTO Pessoa (nome_completo, genero, data_nascimento, morada, nome_Pai, nome_Mae)
VALUES (pnome_completo, pgenero, pdata_nascimento, pmorada, pnome_pai, pnome_mae);
SET vidpessoa = LAST_INSERT_ID();
INSERT INTO Contacto (id_Pessoa, telefone01, telefone02, email)
VALUES (vidpessoa, ptelefone01, ptelefone02, pemail);
INSERT INTO Funcionario (id_Pessoa, id_Categoria, data_contrato, carga_horaria, especialidade)
VALUES (vidpessoa, pid_Categoria, pdata_contrato, pcarga_horaria, pespecialidade);
SET vidfuncionario = LAST_INSERT_ID();
INSERT INTO Login (id_Funcionario, usuario, senha, nivel)
VALUES (vidfuncionario, pusuario, psenha, pnivel);
SELECT * FROM Funcionario f
JOIN Pessoa p
USING(id_Pessoa)
JOIN Contacto c
ON c.id_Pessoa = p.id_Pessoa
JOIN Categoria g
USING(id_Categoria)
LEFT OUTER JOIN Login l
USING(id_Funcionario) WHERE f.id_Funcionario = LAST_INSERT_ID();
END