Hola andelval:
el problema es que estas concatenando comillas al nombre de la tabla, es decir no es lo mismo 'tabla' que tabla...
checa este ejemplo. Supongamos que queremos buscar la tabla1 en el esquema pruebas, entonces hacemos esto:
Código MySQL:
Ver original -> table_schema
, table_name
, ENGINE, table_rows
-> table_schema
= 'pruebas' AND -> table_name = 'tabla1';
+--------------+------------+--------+------------+
| table_schema
| table_name
| ENGINE | table_rows
| +--------------+------------+--------+------------+
| pruebas
| tabla1
| InnoDB | 2 | +--------------+------------+--------+------------+
Lo que tú estás haciendo equivale a poner algo así:
Código MySQL:
Ver original -> table_schema
, table_name
, ENGINE, table_rows
-> table_schema
= 'pruebas' AND -> table_name = '''tabla1''';
por lo tanto encontrarás la tabla sólo si el nombre de la misma incluyera las comillas.
Intenta quitando el CONCAT que tienes en la asignación de tu variable:
Código MySQL:
Ver originalmysql
> SET @cuTable
= 'tabla1';Query OK, 0 rows affected (0.00 sec)
-> table_schema
, table_name
, ENGINE, table_rows
-> table_schema
= 'pruebas' AND -> table_name = @cuTable;
+--------------+------------+--------+------------+
| table_schema
| table_name
| ENGINE | table_rows
| +--------------+------------+--------+------------+
| pruebas
| tabla1
| InnoDB | 2 | +--------------+------------+--------+------------+
O si lo prefieres con SELECT :=
Código MySQL:
Ver originalmysql
> SELECT @cuTable
:='tabla2';+--------------------+
| @cuTable:='tabla2' |
+--------------------+
| tabla2 |
+--------------------+
-> table_schema
, table_name
, ENGINE, table_rows
-> table_schema
= 'pruebas' AND -> table_name = @cuTable;
+--------------+------------+--------+------------+
| table_schema
| table_name
| ENGINE | table_rows
| +--------------+------------+--------+------------+
| pruebas
| tabla2
| InnoDB | 9 | +--------------+------------+--------+------------+
Saludos
Leo.