Nomes de tabelas dinâmicas em instruções SQL
Executar consultas SQL com nomes de tabelas dinâmicas pode ser um desafio. Considere o seguinte exemplo:
SET @id := '47'; SET @table := @id '_2013_2014_voucher'; SELECT * FROM @table; Delete FROM @table where>
Esta consulta gera o seguinte erro:
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@table' at line 1
Solução usando instruções preparadas
A abordagem recomendada para lidar com nomes de tabelas dinâmicas é usar instruções preparadas. As instruções preparadas permitem especificar dinamicamente o nome da tabela, garantindo a sintaxe e a segurança adequadas. No MySQL, você pode usar as instruções PREPARE e EXECUTE da seguinte forma:
SET @id := '47'; SET @table := concat(@id,'_2013_2014_voucher'); set @qry1:= concat('select * from ',@table); prepare stmt from @qry1 ; execute stmt ;
A função CONCAT() é usada para concatenar dinamicamente a string do nome da tabela. A instrução preparada é então executada, evitando o erro de sintaxe.
Aplicando para excluir consulta
A mesma abordagem pode ser estendida para excluir consultas:
SET @qry2:= concat('DELETE FROM ',@table,' where>
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3