Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Como inserir com stored procedure em duas tabelas


Porter
 Share

Question

ola pessoal, na SP abaixo, como faço para inserir o id que foi gerado na tabela pessoas e atribuir a

pessoa_id que está na tabela fornecpj, na tabela pessoas esta gerando corretamente o auto incremento, mas não estou conseguindo inserir esse mesmo codigo gerado na tabela fornecpj, obrigado.

DELIMITER $$

DROP PROCEDURE IF EXISTS cad_for $$

create procedure cad_for

(

p_endereco varchar(40),

p_razsocial varchar(40),

p_nomefantasia varchar(40),

p_bairro varchar(40),

p_cidade varchar(30),

p_uf varchar(2),

p_cep varchar(9),

p_email varchar(50),

p_cnpj varchar(14),

p_ie varchar(10)

)

BEGIN

insert into

pessoas(endereco, razsocial, nomefantasia, bairro, cidade, uf, cep, email)

values

(p_endereco, p_razsocial, p_nomefantasia, p_bairro, p_cidade, p_uf, p_cep, p_email);

insert into fornecpj(cnpj, ie) values(p_cnpj, p_ie);

END$$

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Coloque suas tabelas no engine InnoDB.

Faça assim:

DELIMITER $$
DROP PROCEDURE IF EXISTS cad_for $$

CREATE PROCEDURE cad_for(
   IN p_endereco varchar(40),
   IN p_razsocial varchar(40),
   IN p_nomefantasia varchar(40),
   IN p_bairro varchar(40),
   IN p_cidade varchar(30),
   IN p_uf varchar(2),
   IN p_cep varchar(9),
   IN p_email varchar(50),
   IN p_cnpj varchar(14),
   IN p_ie varchar(10)
)
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 pessoas(endereco, razsocial, nomefantasia, bairro, cidade, uf, cep, email)
   VALUES(p_endereco, p_razsocial, p_nomefantasia, p_bairro, p_cidade, p_uf, p_cep, p_email);

   IF excecao = 1 THEN
      SET msg = "ALERTA: Erro ao inserir na tabela de pessoas";
      ROLLBACK;
   ELSE
      SELECT DISTINCT LAST_INSERT_ID() INTO @idPessoas FROM pessoas;
      IF excecao = 1 THEN
         SET msg = "ALERTA: Erro ao buscar o ultimo ID inserido em pessoas";
         ROLLBACK;
      ELSE 
         INSERT INTO fornecpj(cnpj, ie, pessoa_id) values(p_cnpj, p_ie, @idPessoas);
         IF excecao = 1 THEN
            SET msg = "ALERTA: Erro ao inserir na tabela de fornecpj";
            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$$ 
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...