Passando array de id’s para Stored Procedure em MySql (Deletar diversos registros)
Olá meu povo, como vai!?
Gostaria de compartilhar com todos, uma solução simples mas que pode ser uma pedra no caminho de quem está acostumado em trabalhar com o SqlServer ou que esteja começando.
Necessitei criar um processo em minha aplicação, onde o usuário pudesse deletar diversos registros de um dataView de uma só vez. Pois bem, todos sabem que para tal funcionalidade, devemos trabalhar com os ‘checkbox’.
Bom, mas o problema é mais embaixo, ou melhor, na Stored Procedure. Como eu não sou um ‘Albert Einstein‘, alguns murros na mesa aliviou o nervoso, mas enfim, ‘minha amada’ e eu conseguimos encontrar a solução.
A princípio, estava fazendo da seguinte maneira:
CREATE PROCEDURE ‘delete’ (arrIds VARCHAR(255))
BEGIN
DELETE FROM tbl_nome WHERE id IN (arrIds);
END
Executando a procedure
CALL delete(‘1,2,3,4,5,6,7,8,9,10′);
O seguinte problema acontecia: No momento em que eu executava a procedure (CALL delete(‘1,2,3,4,5,6,7,8,9,10′);), somente o registro de número 1 como no exemplo acima, era excluído.
A execução via query string convencional, sem o uso de procedures, funcionava normalmente, porém não era esta qualidade que eu buscava.
Após belas cabeçadas, da seguinte maneira consegui escalar o ‘Monte Everest‘:
CREATE PROCEDURE ‘delete’ (IN arrIds VARCHAR(255))
BEGIN
SET @query = CONCAT(‘DELETE FROM tbl_nome WHERE id IN (‘, arrIds,’)');
PREPARE executando FROM @query;
EXECUTE executando;
DEALLOCATE PREPARE executando;
END
Executando a procedure
CALL delete(‘1,2,3,4,5,6,7,8,9,10′);
Bom, espero que esta experiência sirva de ajuda para alguma alma.
Forte abraço e até a próxima, aliás, demorei para voltar com os post’s. Bom feriado à todos.
Olinto 3:25 pm em Agosto 4, 2009 Link Permanente |
Grande! Acabou de salvar o dia! Vlw!!!
felippem 3:35 pm em Agosto 4, 2009 Link Permanente |
Opá, estamos aí!