Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
Carregando comentários...