segunda-feira, abril 01, 2013

Procedure com query dinâmica para excluir um registro no MySQL

HI,

Estou fazendo um site usando Asp.Net com MySQL, e cada tabela tem a sua classe no sistema, e em cada classe tem o método Manutenção para inserir/atualizar e o método Excluir. Só que o excluir é repetitivo em cada classe: delete from tabela where campo = 1, por exemplo. A única coisa que muda é a tabela e o campo. Então pensei em fazer uma procedure genérica onde eu passasse como parâmetro o nome da tabela , o campo da condição e o código do registro a ser excluído. No Oracle eu já sabia que tem com montar uma query pra ser execeutada.

Achei a dica aqui

How To have Dynamic SQL in MySQL Stored Procedure
http://stackoverflow.com/questions/190776/how-to-have-dynamic-sql-in-mysql-stored-procedure


Minha procedure ficou assim:


CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_excluir_registro`(IN `_NOMETABELA` VARCHAR(50), IN `_CAMPO` VARCHAR(50), IN `_VALOR` VARCHAR(50))
BEGIN
SET @s = CONCAT('DELETE FROM ',_NOMETABELA, ' WHERE ', _CAMPO, ' = ', _VALOR);
PREPARE stmt FROM @s;
EXECUTE stmt;
END




Fiquem na Paz!!!!

Nenhum comentário: