@Andrew: Вы все равно должны создать новую таблицу, а затем ее переименовать против Insert / Select плюс Delete :-)

нный момент мне приходится каждый месяц перезапускать запрос на выборку, где я создаю одну базовую таблицу. Эта таблица называется что-то вродеMyDB.MyTable_Current_Dateтак что на сегодня это будетMyDB.MyTable_201811 используя формат даты ГГГГММ.

Вместо того, чтобы устанавливать имя вручную (используя Ctrl + H), я хотел бы, чтобы это было сделано автоматически. Моя цель состоит в том, чтобы я мог открыть SQL и выполнить запрос, где создается таблицаMyTable_YYYYMM.

Примечание: в конце концов я также хочу, чтобы SQL запускался автоматически каждый месяц, но сейчас это хороший первый шаг для моего понимания.

Я сделал нижехранимая процедура, Проблема в том, что если я хочу сделатьalter table или жеinsert into Заявление, я не могу (или не знаю, как) ссылаться на таблицу, которая была создана.

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

Должен ли я сделать это с помощьюхранимая процедураили используяпользовательская функция?

Было бы идеально, если бы я мог просто обратиться к некоторой функции, например:CREATE TABLE DB.My_UDF(<My_DB>, <My_Table_Name>)

Не могли бы вы помочь мне, приведя пример кода?

Ответы на вопрос(1)

Ваш ответ на вопрос