"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como executar consultas SQL com nomes de tabelas dinâmicas no MySQL?

Como executar consultas SQL com nomes de tabelas dinâmicas no MySQL?

Publicado em 15/11/2024
Navegar:679

How to Execute SQL Queries with Dynamic Table Names in MySQL?

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>
Tutorial mais recente Mais>

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