我有一个查询,我必须每月更新并生成一个新表。这个表有几个参考,我似乎总是错过一个。我想知道是否有一种方法可以设置局部变量并在查询中重用它。举个例子:
DECLARE 'table'||to_char(curent_timestamp, 'MON') ||
to_char(current_timestanp,"YY") AS table_ref;
CREATE TABLE table_ref AS select * FROM base_table;
SELECT * FROM table_ref;
感谢。
答案 0 :(得分:0)
您可以使用FORMAT()
和EXECUTE
来执行动态SQL,如下所示:
DO $$
DECLARE table_name TEXT;
BEGIN
SELECT FORMAT('table%I',TO_CHAR(CURRENT_TIMESTAMP,'MONYY')) INTO table_name; -- ex. tableJUN16
EXECUTE FORMAT('CREATE TABLE %I AS SELECT * FROM base_table;',table_name);
END; $$ LANGUAGE PLPGSQL;
这将使用动态名称从base_table
创建新表格。
https://www.postgresql.org/docs/current/static/functions-string.html