¿Cómo puedo crear una tabla con un nombre dinámico (basado en current_date) y hacer referencia a ella en las instrucciones INSERT?

En este momento tengo que volver a ejecutar la consulta de selección de datos cada mes, donde creo una tabla base. Esta tabla se llama algo así comoMyDB.MyTable_Current_Date, así que hoy seríaMyDB.MyTable_201811 utilizando el formato de fecha AAAAMM.

En lugar de tener que establecer el nombre manualmente (usando ctrl + h), me gustaría que esto se haga automáticamente. Mi objetivo es poder abrir el SQL y ejecutar la consulta donde la tabla que se crea esMyTable_YYYYMM.

Nota: eventualmente quiero dejar que el SQL se ejecute automáticamente cada mes, pero por ahora este es un buen primer paso para mi comprensión.

Hice el siguienteprocedimiento almacenad. El problema es que si quiero hacer unalter table oinsert into, no puedo (o no sé cómo) referirme a la tabla que se creó.

REPLACE PROCEDURE DB.table_yymm
(
IN      db_name VARCHAR(128), 
    tbl_name    VARCHAR(128)
    )
BEGIN
    DECLARE create_name VARCHAR(261) 
    ;   
    DECLARE sql_stmt    VARCHAR(600)
    ;

    SET create_name = db_name || '.' || tbl_name || CAST(
                                                    (CURRENT_DATE (FORMAT 'yymm'))
                                                    AS CHAR(4)
                                                    )
    ;
    SET sql_stmt = 'CREATE TABLE ' || create_name || ' (testvar char(1))' || ';' ;

    EXECUTE IMMEDIATE sql_stmt;         
END;

CALL prd_work_lm.table_yymm('My_DB', 'My_Table')

Debo hacer esto usando unaprocedimiento almacenad, o usando una función definida por el usuario?

ería ideal si simplemente pudiera referirme a alguna función, por ejemplo:CREATE TABLE DB.My_UDF(<My_DB>, <My_Table_Name>)

¿Podría ayudarme proporcionando un ejemplo de una muestra de código?

Respuestas a la pregunta(1)

Su respuesta a la pregunta