PostgreSQL 函数

在本节中,我们将了解PostgreSQL 函数的工作原理,创建函数命令,并使用 PostgreSQL 的不同工具(例如pgadmin4和SQL shell (PSQL))查看PostgreSQL CREATE FUNCTION 命令的实时示例。

并查看调用用户定义函数的示例,例如位置表示法、命名表示法、混合表示法。

什么是 PostgreSQL 函数?

PostgreSQL函数或存储过程是一组 SQL 和过程命令,如声明、赋值、循环、控制流等,存储在数据库服务器上,可以使用SQL 接口参与。它也被称为PostgreSQL 存储过程。

我们可以用多种语言创建 PostgreSQL 函数,例如SQL、PL/pgSQL、C、Python等。

它使我们能够执行操作,这些操作通常会在数据库中的函数中执行各种命令和往返。

什么是 PostgreSQL CREATE Function 命令?

在 PostgreSQL 中,如果我们想指定一个新的用户自定义函数,可以使用CREATE FUNCTION命令。

PostgreSQL CREATE Function 命令的语法

PostgreSQL CREATE Function 命令的语法如下:

CREATE [OR REPLACE] FUNCTION function_name (arguments)     
RETURNS return_datatype   
LANGUAGE plpgsql  
AS $variable_name$    
DECLARE    
declaration;    
[...] -- variable declaration   
 BEGIN    
< function_body >    
[...]  -- logic  
RETURN { variable_name | value }    
END;   
$$  

在上面的语法中,我们使用了以下参数,如下表所示:

参数 描述
function_name
  • 函数名参数用于定义函数名。
  • 函数名写在CREATE FUNCTION关键字之后。
[OR REPLACE]
  • 如果我们想改变当前函数,我们可以使用OR REPLACE关键字。
  • 它是一个可选参数。
Function
  • 使用OR REPLACE关键字后,我们可以定义包含在函数名称后的括号中的函数参数列表。
  • 一个函数可以包含零个或多个参数。
RETURN
  • 我们可以在RETURN关键字之后定义数据类型,我们将从函数返回。
  • 它可以是表列类型的基本、复合或域类型或引用。
Language plpgsql
  • 它用于定义执行函数的过程语言的名称。
  • 不仅是plpgsql, PostgreSQL 还支持各种过程语言。
Function_body
  • function_body包含逻辑的可执行部分。

PostgreSQL 创建函数命令示例

让我们看一个不同的例子来理解PostgreSQL CREATE Function命令的工作原理。

我们从 PostgreSQL 教程中创建的Javatpoint数据库中获取Car表。

创建一个新函数

在下面的命令中,我们创建了一个新函数,它计算Car_Price在Price_from 和 Price_to参数之间的汽车:

Create function get_car_Price(Price_from int, Price_to int)  
returns int  
language plpgsql  
as  
$$  
Declare  
 Car_count integer;  
Begin  
   select count(*)   
   into Car_count  
   from Car  
   where Car_price between Price_from and Price_to;  
   return Car_count;  
End;  
$$;  

 get_car_Price函数分为两个主要部分,分别是Header和 Function Body。

我们在Header部分使用了以下参数:

  • 首先,我们指定函数名称为get_car_Price(),写在create函数之后
  • 之后,get_car_Price()函数包含两个参数Price_from和Price_to,具有整数数据类型。
  • 然后,get_car_Price()函数检索由 return int 条件定义的整数。
  • 最后,我们使用函数语言作为plpgsql。

我们在函数体部分使用了以下参数:

  • 我们在函数部分使用了美元引用的字符串常量插图,它以$$开头并以$$结尾。
  • 在$$符号之间,我们可以放置一个块,它覆盖了函数的声明和逻辑。
  • 在声明块中,我们声明了一个名为Car_count 的变量,它存储从Car中选择的汽车
  • 在块部分的主体中,我们使用了SELECT INTO命令来选择值介于Price_from 和 Price_to之间的汽车价格,并将输出提供给Car_count
  • 在块的末尾,我们使用RETURN命令获取

热门文章

优秀文章