INSERT DYNAMIC SQL DOESNT GET VALUES
Hi everybody, i'm writing a store procedure, which is gonna be used to make backups for specifically some tables and enterprises, i'm using dynamic sql to make inserts and dumping into a file but my problem consists instead to print the values for each column, dynamic sql print columns.Help me please. Attach my code
/*Modifico el delimitador para que el motor de la base de datos, no termine con la ejecucion del store*/
DELIMITER $$
/*Borro el procedimiento almacenado, si este ya existe dentro de la base de datos*/
DROP PROCEDURE IF EXISTS respalda_datos_tablas$$
/*Creo el procedimiento almacenado para obtener datos de la tabla de acceso de modulos*/
CREATE PROCEDURE respalda_datos_tablas(param_id_empresa SMALLINT,param_nombre_tabla_respaldar VARCHAR(200),param_tabla_comparar VARCHAR(200),param_nombre_columna VARCHAR(200))
/*Defino la clausula de seguridad para checar los permisos y/o privilegios del usuario que ejecuta el script*/
SQL SECURITY INVOKER
/*Comienza el cuerpo de instrucciones del procedimiento almacenado*/
BEGIN
/*Asigno a la variable columnas en formato lineal el valor devuelto por la consulta*/
SET @consulta_columnas_formato_lineal=CONCAT("SELECT GROUP_CONCAT(TABLE_NAME,'.',COLUMN_NAME) INTO @columnas_tabla FROM
INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='",param_nombre_tabla_respaldar,"'
AND COLUMN_NAME NOT REGEXP '^id$';");
/*Preparo la consulta para que sea interpretada y ejecutada*/
PREPARE stmt_consulta_columnas_formato_lineal FROM @consulta_columnas_formato_lineal;
/*Ejecuto la sentencia preparada*/
EXECUTE stmt_consulta_columnas_formato_lineal;
/*Borro la sentencia preparada para posteriores ejecuciones*/
DEALLOCATE PREPARE stmt_consulta_columnas_formato_lineal;
/*Pregunto si la tabla a comparar es la de Empresas*/
IF param_tabla_comparar='Empresas' THEN
/*Escribo la consulta para que sea de manera dinamica a traves de la funcion concat, donde le paso el id de la empresa*/
SET @consulta_respaldar_tabla=CONCAT("SELECT 'INSERT LOW_PRIORITY INTO Call_Center_Infinit_",param_id_empresa,".",
param_nombre_tabla_respaldar,"(",@columnas_tabla,") VALUES(`",@columnas_tabla,"`);'
INTO OUTFILE '/var/lib/mysql/respalda_datos_tbl_",param_nombre_tabla_respaldar,"_",DATE_FORMAT(CURRENT_TIMESTAMP(),'%d%b%Y_%H%i'),".sql'
FIELDS TERMINATED BY '\t'
OPTIONALLY ENCLOSED BY '""'
LINES TERMINATED BY '\n'
FROM ",param_nombre_tabla_respaldar,"
INNER JOIN ",param_tabla_comparar,"
ON ",param_nombre_tabla_respaldar,".id=",param_tabla_comparar,".",param_nombre_columna,"
WHERE ",param_tabla_comparar,".id=",param_id_empresa,";");
/*En caso contrario, consulto de distinta manera*/
ELSE
SET @consulta_respaldar_tabla=CONCAT("SELECT 'INSERT LOW_PRIORITY INTO Call_Center_Infinit_",param_id_empresa,".",
param_nombre_tabla_respaldar,"(",@columnas_tabla,") VALUES(`",@columnas_tabla,"`);'
INTO OUTFILE '/var/lib/mysql/respalda_datos_tbl_",param_nombre_tabla_respaldar,"_",DATE_FORMAT(CURRENT_TIMESTAMP(),'%d%b%Y_%H%i'),".sql'
FIELDS TERMINATED BY '\t'
OPTIONALLY ENCLOSED BY '""'
LINES TERMINATED BY '\n'
FROM ",param_tabla_comparar,"
INNER JOIN ",param_nombre_tabla_respaldar,"
ON ",param_tabla_comparar,".id=",param_nombre_tabla_respaldar,".",param_nombre_columna,"
WHERE ",param_tabla_comparar,".id_empresa=",param_id_empresa,";");
/*Cierro el condicional IF*/
END IF;
SELECT @consulta_respaldar_tabla;
/*Finaliza el cuerpo de instrucciones del procedimiento almacenado*/
END $$