PostgreSQL – 用户定义函数
PostgreSQL 使用 CREATE FUNCTION 语句来开发用户定义的函数。
Syntax:
CREATE FUNCTION function_name(p1 type, p2 type)
RETURNS type AS
BEGIN
-- logic
END;
LANGUAGE language_name;
我们来分析一下上面的语法:
- 首先,在CREATE FUNCTION关键字之后指定函数的名称。
- 然后,将逗号分隔的参数列表放在函数名称后面的括号内。
- 接下来,在RETURNS关键字后指定函数的返回类型。
- 之后,将代码放在BEGIN和END块中。该函数始终以分号 (;) 结尾,后跟END关键字。
- 最后,指出函数的过程语言,例如,如果使用 PL/pgSQL,则为plpgsql 。
示例 1:
在本例中,我们将开发一个名为inc的非常简单的函数,它将整数加 1 并返回结果。
首先,启动 pgAdmin 并连接到dvdrental 示例数据库。
其次,输入以下命令创建inc函数。
CREATE FUNCTION inc(val integer) RETURNS integer AS $$
BEGIN
RETURN val + 1;
END; $$
LANGUAGE PLPGSQL;
第三,点击执行按钮来创建函数:
您提供给 CREATE FUNCTION 的整个函数定义必须是单引号字符串。这意味着如果函数有任何单引号 ('),你必须转义它。
幸运的是,从 8.0 版本开始,PostgreSQL 提供了一个称为美元引用的功能,它允许您选择一个合适的字符串,该字符串不会出现在函数,这样您就不必对其进行转义。一美元的报价是$字符之间的字符串。
如果函数有效,PostgreSQL 将创建函数并返回 CREATE FUNCTION 语句,如上所示。
让我们测试 inc函数。
您可以像调用任何内置函数一样调用inc函数,如下所示:
SELECT inc(20);
SELECT inc(inc(20));
它按预期工作。
使用 pgAdmin 创建函数:
n PostgreSQL,具有不同参数的函数可以共享相同的名称。这称为函数重载,类似于 C++ 或Java的函数重载。
我们可以创建一个名为 inc 的新函数,它接受两个参数。在函数,我们将通过第二个参数增加第一个参数的值。
以下步骤向您展示如何从 pgAdmin 创建函数。
首先,启动 pgAdmin 并连接到dvdrental数据库。
其次,右键单击Functions并选择Create > 函数...菜单项。将显示一个新窗口。
三、在函数名中输入inc:
四、在定义中 选项卡,单击 + 按钮添加两个参数i 和val 使用bigint 作为数据类型。
在同一选项卡中的第五个将语言更改为plpgsql:
现在是定义函数了,切换到代码选项卡并定义它,如下所示:
六、点击SQL标签查看生成的代码,点击保存按钮创建函数:
第七,在像Security和Options里有更多的选项。但是,我们现在只需要基本选项。该函数可能不会显示在函数列表中。要查看新的inc函数,请右键单击Functions并单击Refresh...菜单项:
这是新的 inc函数:
现在让我们使用以下查询测试该函数:
SELECT inc(10, 20);
输出: