使用plpgsql fucntion在postgres DB中创建表

时间:2016-06-17 08:59:12

标签: postgresql plpgsql

使用pgAdmin III,我想专门使用PL / pgSQL函数在我的postgres DB中创建表。以下命令集对我来说工作正常。

Create or Replace Function mk_tbl()
Returns Integer As $$
Declare
Begin
Drop Table if exists sel_streets;
Create Table sel_streets
(
id Integer,
Geom geometry
);
Create Index sel_streets_indx
ON sel_streets Using
gist (geom);
Return (1);
End $$ Language plpgsql volatile;

我通过这个命令调用该函数:

Select mk_tbl();

我的问题是每次调用此函数时,它都会在postgres DB中创建表,并返回“1”(在SQL编辑器输出面板中),这是不需要的。我知道最终一个函数应该返回一些东西,我也可以像这样使用void构造:

Create or Replace Function mk_tbl()
Returns Void As $$
...

但是,我想要的是调用这个函数,它只应该在我的potgres DB中创建表,而不应该返回任何内容。是否可以使用PL / pgSQL专门做到这一点?

1 个答案:

答案 0 :(得分:1)

空结果有什么问题?

使用DO语句可以执行您想要的操作:

DO LANGUAGE plpgsql $$BEGIN
   PERFORM mk_tbl();
END;$$;