Ir para conteúdo

POWERED BY:

Arquivado

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

Spyder.RV

[Resolvido] Procedure Para Exclusão De Registros

Recommended Posts

Estou montando uma rotina generica pra apagar registros de uma tabela, e após isso me dar um retorno se a exclusão foi bem sucedida ou não.

 

1- v_tabela => Nome da tabela que vai ter os registros excluidos

2- v_filtro => Filtro da exclusão

 

Apagar usando o código

CALL apagaRegistros( "cliente", "codCliente = 20");
SELECT @retorno as apagouRegistro;

 

Apagar usando o nome (ou parte dele)

CALL apagaRegistros( "cliente", "nomeCliente LIKE '%MARIA%'");
SELECT @retorno as apagouRegistro;

 

CREATE PROCEDURE apagaRegistros( v_tabela VARCHAR(255), v_filtro TEXT)
BEGIN
   IF (v_filtro = "" OR v_filtro = NULL) THEN
       SET v_filtro = "";
   ELSE
       SET v_filtro = CONCAT(" WHERE ", v_filtro);
   END IF;

   SET @sqlDelete = CONCAT("DELETE FROM ", v_tabela, v_filtro);

   PREPARE consulta FROM @sqlDelete;
   EXECUTE consulta;
   DEALLOCATE PREPARE consulta;

   SET @retorno = IF( (SELECT ROW_COUNT()) > 0, true, false );

END; $

 

O código funcionou bem, pois os registros foram apagados, porém o SELECT ROW_COUNT() tá retornando -1 e não a qtd de linhas excluidas.

 

Eu sei que ROW_COUNT() funciona bem pra INSERTS e UPDATES, mas não tá dando certo pra DELETE.

 

Qual é o meio correto pra VALIDAR uma exclusão, verificando se foi bem sucedida ou não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá resolvido..

 

foi só deixar a linha linha: SET @retorno = IF( (SELECT ROW_COUNT()) > 0, true, false ); pra ficar antes dfo DEALLOCATE PREPARE consulta.

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.