@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>)
Не могли бы вы помочь мне, приведя пример кода?