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

Pegar o código e a descrição de um erro dentro de uma stored Procedure


neibala

Pergunta


Pessoal

          Como estou utilizando o comando abaixo e está funcionando corretamente, só que estou precisando pegar o código de erro e também a descrição do erro, como devo fazer para pegar essas informações dentro de uma stored procedure ?


declare pv_ic_Error smallint default 0;
declare continue handler FOR SQLEXCEPTION set pv_ic_Error = 1;


Estou utilizando o MySQL 5.5.20

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Abaixo segue um exemplo de uma storage procedure que uso em meus sistemas:

DELIMITER $$

USE `meubancodedados`$$

DROP PROCEDURE IF EXISTS `minhaprocedure_crud`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `minhaprocedure_crud`(IN Acao CHAR(1), IN pidCampo INTEGER, IN pnmCampo VARCHAR(50), IN 
   pidUsuarioRespInclusao INTEGER, IN pidUsuarioRespAlteracao INTEGER)
BEGIN
   DECLARE msg VARCHAR(1000) DEFAULT "MySQL: Sem mensagem";
   DECLARE excecao SMALLINT DEFAULT 0;
   DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET excecao = 1;
   IF pnmCampo = "" OR (Acao <> "I" AND pidCampo = 0) THEN
      SET msg = "MySQL: Erro na passagem de parametros";
   ELSE
      START TRANSACTION;
      /*Inclusao*/
      IF Acao = "I" THEN
         INSERT INTO minhaTabela(nmCampo, idUsuarioRespInclusao, dhInclusaoInformacao)
         VALUES (pnmCampo, pidUsuarioRespInclusao, NOW());
         IF excecao = 1 THEN
            SET msg = "MySQL: Erro ao inserir na tabela de minhaTabela";
            ROLLBACK;
         END IF;
      END IF;
   
      IF excecao <> 1 THEN
         IF Acao <> "I" THEN
            SET @idCampo = pidCampo;
         END IF;
         /*Alteracao*/
         IF Acao = "A" THEN
            UPDATE minhaTabela
            SET nmCampo = pnmCampo,
                idUsuarioRespAlteracao = pidUsuarioRespAlteracao
            WHERE idCampo = @idCampo;
            IF excecao = 1 THEN
               SET msg = "MySQL: Erro ao atualizar minhaTabela";
               ROLLBACK;
            END IF;
         END IF;
      END IF;
      /*Exclusao*/
      IF excecao <> 1 THEN
         IF Acao = "E" THEN
            DELETE FROM minhaTabela
            WHERE idCampo = @idCampo;
            IF excecao = 1 THEN
               SET msg = "MySQL: Erro ao excluir minhaTabela";
               ROLLBACK;
            END IF;
         END IF;
      END IF;
        
      /*Se tudo deu certo, então finaliza confirmando a gravacao.*/
      IF excecao <> 1 THEN
         COMMIT;
         IF Acao = "I" THEN
            SET msg = "MySQL: minhaTabela Incluido com sucesso";
         ELSE
            IF Acao = "A" THEN
               SET msg = "MySQL: minhaTabela Alterado com sucesso";
            ELSE
               SET msg = "MySQL: minhaTabela Excluido com sucesso";
            END IF;
         END IF;
      END IF;
   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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...