PostgreSQL 函数
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;
在这里:
- function-name 指定函数的名称。
-
[OR REPLACE]选项允许修改现有函数。
-
函数必须包含一个 return 语句。
-
RETURN 子句指定从函数返回的数据类型。return_datatype可以是基本类型、复合类型、域类型,或者可以引用表列的类型。
-
function-body 包含可执行部分。
-
使用AS关键字创建一个独立函数。
-
plpgsql 是实现函数的语言的名称。在这里,我们在PostgreSQL中使用此选项,它可以是SQL、C、internal或用户定义的过程语言的名称。为了向后兼容,名称可以用单引号括起来。
示例
以下示例演示了如何创建和调用一个独立函数。此函数返回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)