Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rcast

parametro de saída em stored procedures

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.