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.



2 Responses to “Passando array de id’s para Stored Procedure em MySql (Deletar diversos registros)”  

  1. 1 Olinto

    Grande! Acabou de salvar o dia! Vlw!!!


Leave a Reply