Ir para conteúdo
Fórum Script Brasil
  • 0

#1064


Rosenildo_ICM

Pergunta

Boa tarde pessoal! estou com problema nesta query e não consigo identificar o porque que apartir de BEGIN está dando o erro #1064. Eu preciso que após fazer a inserção dos dados a SP me retorne o Id que é auto incremento se alguém poder me ajudar eu agradeço.

DELIMITER $$
CREATE PROCEDURE uspPacienteInserir(
IN v_nome VARCHAR(80),
IN v_cpf VARCHAR(14),
IN v_rg VARCHAR(14),
IN v_estadocivil ENUM('solteiro','casado', 'divorciado','viuvo'),
IN v_sexo ENUM('Masculino', 'Feminino'),
IN v_etinia ENUM('africano', 'asiatico', 'caucasiano', 'latino'),
IN v_profissao VARCHAR(20),
IN v_naturalidade VARCHAR(20),
IN v_nacionalidade VARCHAR(20),
IN v_nascimento DATE,
IN v_falecido ENUM('Sim', 'Não'),
IN v_hobby VARCHAR(50),
IN v_indicadopor VARCHAR(20),
IN v_nomemae VARCHAR(80),
IN v_nascimentomae DATE,
IN v_profissaomae VARCHAR(20),
IN v_nomepai VARCHAR(80),
IN v_nascimentopai DATE,
IN v_profissaopai VARCHAR(20),
IN v_foto BLOB
)
BEGIN

OUT ultimoIdInserido INTO;

INSERT INTO paciente (nome,cpf,rg,estadocivil,sexo,etnia,profissao,naturalidade,nacionalidade,nascimento,falecido,hobby,indicadopor,nomemae,nascimentomae,profissaomae,nomepai,nascimentopai,profissaopai,foto);

VALUES (v_nome, v_cpf, v_rg, v_estadocivil, v_sexo, v_etnia, v_profissao, v_naturalidade, v_nacionalidade, v_nascimento, v_falecido, v_hobby, v_indicadopor, v_nomemae, v_nascimentomae, v_profissaomae, v_nomepai, v_nascimentopai, v_profissaopai, v_foto);

SELECT  id_paciente INT ultimoIdInserido FROM paciente ORDER BY id_paciente DESC LIMIT 1;

END $$

DELIMITER;

 

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Se  id_paciente  é auto_increment então:Remova a linha  

OUT ultimoIdInserido INTO;

Altere a linha 

SELECT  id_paciente INT ultimoIdInserido FROM paciente ORDER BY id_paciente DESC LIMIT 1;

para 

 SELECT  LAST_INSERT_ID() as  ultimoIdInserido FROM paciente;

 

Link para o comentário
Compartilhar em outros sites

  • 0

Modifique sua procedure para que trabalhe assim:

DELIMITER $$
CREATE PROCEDURE uspPacienteInserir(
IN v_nome VARCHAR(80),
IN v_cpf VARCHAR(14),
IN v_rg VARCHAR(14),
IN v_estadocivil ENUM('solteiro','casado', 'divorciado','viuvo'),
IN v_sexo ENUM('Masculino', 'Feminino'),
IN v_etinia ENUM('africano', 'asiatico', 'caucasiano', 'latino'),
IN v_profissao VARCHAR(20),
IN v_naturalidade VARCHAR(20),
IN v_nacionalidade VARCHAR(20),
IN v_nascimento DATE,
IN v_falecido ENUM('Sim', 'Não'),
IN v_hobby VARCHAR(50),
IN v_indicadopor VARCHAR(20),
IN v_nomemae VARCHAR(80),
IN v_nascimentomae DATE,
IN v_profissaomae VARCHAR(20),
IN v_nomepai VARCHAR(80),
IN v_nascimentopai DATE,
IN v_profissaopai VARCHAR(20),
IN v_foto BLOB
)
BEGIN
   DECLARE ultimoIdInserido INTEGER;
   DECLARE msg VARCHAR(1000) DEFAULT "sem mensagem";
   DECLARE excecao SMALLINT DEFAULT 0;
   DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET excecao = 1;
   START TRANSACTION;
   INSERT INTO paciente (nome, cpf, rg, estadocivil, sexo, etnia, profissao, naturalidade, nacionalidade, nascimento, falecido, hobby, indicadopor,
                         nomemae, nascimentomae, profissaomae, nomepai, nascimentopai, profissaopai, foto);
   VALUES (v_nome, v_cpf, v_rg, v_estadocivil, v_sexo, v_etnia, v_profissao, v_naturalidade, v_nacionalidade, v_nascimento, v_falecido, v_hobby,
           v_indicadopor, v_nomemae, v_nascimentomae, v_profissaomae, v_nomepai, v_nascimentopai, v_profissaopai, v_foto);
   IF excecao = 1 THEN
      SET msg = 'Erro na inclusao do paciente';
      ROLLBACK;
   ELSE
      SELECT LAST_INSERT_ID() INTO ultimoIdInserido FROM paciente;
      SET msg = CONCAT('Paciente ', ultimoIdInserido, ' incluido com sucesso');
      COMMIT;
   END IF;
   SELECT msg AS msg;
END $$

DELIMITER;

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...