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>
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