"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo ejecutar consultas SQL con nombres de tablas dinámicas en MySQL?

¿Cómo ejecutar consultas SQL con nombres de tablas dinámicas en MySQL?

Publicado el 2024-11-15
Navegar:210

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

Nombres de tablas dinámicas en sentencias SQL

La ejecución de consultas SQL con nombres de tablas dinámicas puede ser un desafío. Considere el siguiente ejemplo:

SET @id := '47';
SET @table := @id '_2013_2014_voucher';
SELECT * FROM @table;
Delete FROM @table where>

Esta consulta arroja el siguiente error:

[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

Solución mediante declaraciones preparadas

El enfoque recomendado para manejar nombres de tablas dinámicas es utilizar declaraciones preparadas. Las declaraciones preparadas le permiten especificar dinámicamente el nombre de la tabla al tiempo que garantizan la sintaxis y la seguridad adecuadas. En MySQL, puede utilizar las declaraciones PREPARE y EXECUTE de la siguiente manera:

SET @id := '47';
SET @table := concat(@id,'_2013_2014_voucher');
set @qry1:= concat('select * from ',@table);
prepare stmt from @qry1 ;
execute stmt ;

La función CONCAT() se utiliza para concatenar dinámicamente la cadena del nombre de la tabla. Luego se ejecuta la declaración preparada, evitando el error de sintaxis.

Aplicar para eliminar consulta

El mismo enfoque se puede extender para eliminar consultas:

SET @qry2:= concat('DELETE FROM ',@table,' where>
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3