📜  PostgreSQL – CREATE FUNCTION 语句

📅  最后修改于: 2022-05-13 01:57:16.052000             🧑  作者: Mango

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_fromlen_to ,数据类型为整数。
  • 三、 get_film_count 函数返回由returns int子句指定的整数
  • 最后,函数的语言语言PLPGSQLPLPGSQL表示

在正文部分:

  • 使用$$开头并以$$结尾的用美元引用的字符串常量语法。在这些$$之间,您可以放置一个包含函数声明和逻辑的
  • 在声明部分,声明一个名为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

这将显示数据库中的所有用户定义函数,如下所示: