如何从postgres中的函数参数获取表名,以便使用表名在函数中创建表

时间:2019-05-31 04:09:30

标签: postgresql

我正在Postgres中创建一个用于创建表的函数,该表名必须在调用函数时由用户指定

CREATE OR REPLACE FUNCTION mnth(
tablename text
)
RETURNS void as $$
BEGIN
CREATE TABLE monthly.||tablename||
(
row_id text,
left_row text,
right_row text,
left_plus text
);
END;
$$ LANGUAGE plpgsql;

在函数调用期间,用户给出的名称将是将在函数中创建的表的名称。

1 个答案:

答案 0 :(得分:0)

您可以使用EXECUTE format

CREATE OR REPLACE FUNCTION mnth(
tablename text
)
RETURNS void as $$
BEGIN
EXECUTE format ( 
'CREATE TABLE %I.%I
(
 row_id text,
 left_row text,
 right_row text,
 left_plus text
)' , 'monthly',tablename );
END;
$$ LANGUAGE plpgsql;