📅  最后修改于: 2020-11-26 06:37:34             🧑  作者: Mango
PostgreSQL函数(也称为存储过程)使您能够执行通常会在数据库中的单个函数进行多个查询和往返的操作。函数允许数据库重用,因为其他应用程序可以直接与您的存储过程进行交互,而无需中间层或重复代码。
可以使用您选择的语言创建函数,例如SQL,PL / pgSQL,C, Python等。
创建函数的基本语法如下-
CREATE [OR REPLACE] FUNCTION function_name (arguments)
RETURNS return_datatype AS $variable_name$
DECLARE
declaration;
[...]
BEGIN
< function_body >
[...]
RETURN { variable_name | value }
END; LANGUAGE plpgsql;
哪里,
函数名指定函数的名称。
[OR REPLACE]选项允许修改现有函数。
该函数必须包含一个return语句。
RETURN子句指定您要从函数返回的数据类型。 return_datatype可以是基本类型,复合类型或域类型,或者可以引用表列的类型。
function-body包含可执行部分。
AS关键字用于创建独立函数。
plpgsql是函数在其中实现的语言的名称。在这里,我们对PostgreSQL使用此选项,它可以是SQL,C,内部或用户定义的过程语言的名称。为了向后兼容,名称可以用单引号引起来。
以下示例说明了如何创建和调用独立函数。此函数返回COMPANY表中的记录总数。我们将使用COMPANY表,该表具有以下记录-
testdb# select * from COMPANY;
id | name | age | address | salary
----+-------+-----+-----------+--------
1 | Paul | 32 | California| 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall| 45000
7 | James | 24 | Houston | 10000
(7 rows)
函数totalRecords()如下-
CREATE OR REPLACE FUNCTION totalRecords ()
RETURNS integer AS $total$
declare
total integer;
BEGIN
SELECT count(*) into total FROM COMPANY;
RETURN total;
END;
$total$ LANGUAGE plpgsql;
当执行上述查询时,结果将是-
testdb# CREATE FUNCTION
现在,让我们执行对该函数的调用并检查COMPANY表中的记录
testdb=# select totalRecords();
当执行上述查询时,结果将是-
totalrecords
--------------
7
(1 row)