Rcast 0 Denunciar post Postado Setembro 4, 2008 Eai blza pessoal? To com uma duvida aqui.. tenho uma SP que insere uma empresa no meu banco, e retorna o EMP_ID que é um campo auto-increment. Fiz a seguinte SP: -------------------------------------------- DELIMITER $$ DROP PROCEDURE IF EXISTS `bd1`.`InsEmpresa`$$ CREATE PROCEDURE `InsEmpresa`( OUT v_empid smallint(6) unsigned, v_nomeemp varchar(40), v_senha smallint(6) unsigned, v_nomeresponsavel varchar(40), v_telresponsavel varchar(15), v_emailresponsavel varchar(40), v_tipocontrato tinyint(3) unsigned, v_obs tinytext ) INSERT INTO arkade.T04_Empresas (C04_nomeemp, C04_senha, C04_nomeresponsavel, C04_telresponsavel, C04_emailresponsavel, C04_tipocontrato, C04_obs ) VALUES (v_nomeemp, v_senha, v_nomeresponsavel, v_telresponsavel, v_emailresponsavel, v_tipocontrato, v_obs)$$ DELIMITER ; ----------------------------------------------------------------------- Como eu passo o EMP_ID gerado pelo campo auto-increment na variável de saída OUT v_empid? Eu sei que é simples mas não achei resposta no google, pelo contrario, confundiu mais ainda minha cabeça.. Compartilhar este post Link para o post Compartilhar em outros sites
Junior_Cassapava 0 Denunciar post Postado Outubro 1, 2008 Ola Rcast! use o operador MAX para capturar o ultimo id inserido. DELIMITER $$ DROP PROCEDURE IF EXISTS `bd1`.`InsEmpresa`$$ CREATE PROCEDURE `InsEmpresa`( OUT v_empid smallint(6) unsigned, v_nomeemp varchar(40), v_senha smallint(6) unsigned, v_nomeresponsavel varchar(40), v_telresponsavel varchar(15), v_emailresponsavel varchar(40), v_tipocontrato tinyint(3) unsigned, v_obs tinytext) DECLARE var_id SMALLINT(6); INSERT INTO arkade.T04_Empresas (C04_nomeemp, C04_senha, C04_nomeresponsavel, C04_telresponsavel, C04_emailresponsavel, C04_tipocontrato, C04_obs ) VALUES (v_nomeemp, v_senha, v_nomeresponsavel, v_telresponsavel, v_emailresponsavel, v_tipocontrato, v_obs); SELECT MAX (T04_Empresas.C04_nomeemp) FROM T04_Empresas INTO @var_id; SET v_empid = @var_id; DELIMITER; Após a definição dos parâmetros é declarada uma variavel chamada "var_id". Logo após a sua sentença sql é feito o SELECT MAX para retornar o ultimo id inserido na tabela, o operador INTO no final da sentença serve para inserir esse valor na variavel var_id, que está representada com o "@". No final é só atribuir o v_empid a variavel adquirida pela sentença que tem o operador MAX. Espero ter ajudado! Abraço! Compartilhar este post Link para o post Compartilhar em outros sites