postgreSQL的变量引用

时间:2016-06-10 00:03:34

标签: postgresql

我有一个查询,我必须每月更新并生成一个新表。这个表有几个参考,我似乎总是错过一个。我想知道是否有一种方法可以设置局部变量并在查询中重用它。举个例子:

    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;

感谢。

1 个答案:

答案 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