PostgreSQL – CREATE FUNCTION 语句
在PostgreSQL CREATE FUNCTION语句中开发用户自定义函数。
Syntax:
create [or replace] function function_name(param_list)
returns return_type
language plpgsql
as
$$
declare
-- variable declaration
begin
-- logic
end;
$$
我们来分析一下上面的语法:
- 首先,在 create 函数关键字后指定函数的名称。如果要替换现有函数,可以使用replace关键字。
- 然后,指定函数名后用括号括起来的函数参数列表。一个函数可以有零个或多个参数。
- 接下来,指定返回值的返回后的数据类型 关键词。
- 之后,使用语言 plpgsql指定函数的过程语言。请注意,PostgreSQL 支持许多过程语言,而不仅仅是plpgsql 。
- 最后,在美元引用的字符串常量中放置一个块。
出于示例的目的,我们将使用示例数据库,即 dvdrental。
例子:
以下语句创建了一个函数,该函数计算len_from之间的长度的电影 和len_to 参数:
create function get_film_count(len_from int, len_to int)
returns int
language plpgsql
as
$$
declare
film_count integer;
begin
select count(*)
into film_count
from film
where length between len_from and len_to;
return film_count;
end;
$$;
函数get_film_count 有两个主要部分:标题和正文。
在标题部分:
- 一、函数是get_film_count 跟在create函数关键字之后。
- 其次, get_film_count ()函数接受两个参数len_from和len_to ,数据类型为整数。
- 三、 get_film_count 函数返回由returns int子句指定的整数
- 最后,函数的语言由语言PLPGSQL被PLPGSQL表示。
在正文部分:
- 使用以$$开头并以$$结尾的用美元引用的字符串常量语法。在这些$$之间,您可以放置一个包含函数声明和逻辑的块。
- 在声明部分,声明一个名为film_count的变量 存储从电影中选择的电影数量 桌子。
- 在块体中,使用select into语句选择长度在len_from之间的片数 和len_to 并将结果分配给film_count 多变的。在块的末尾,使用return语句返回film_count 。
现在我们已经熟悉了 CREATE FUNCTION 语句的结构,让我们使用它创建一个函数。
首先启动psql交互工具,连接dvdrental数据库,在psql中输入以上代码,创建函数如下:
create function get_film_count(len_from int, len_to int)
returns int
language plpgsql
as
$$
declare
film_count integer;
begin
select count(*)
into film_count
from film
where length between len_from and len_to;
return film_count;
end;
$$;
如果函数创建成功,您将看到以下消息,如下所示:
最后,使用以下命令列出当前数据库中的所有用户定义:
\df
这将显示数据库中的所有用户定义函数,如下所示: