Postgresql 简明教程

PostgreSQL - Functions

PostgreSQL functions ,也称为存储过程,允许您在数据库中的单个函数中执行通常需要多个查询和往返的操作。由于其他应用程序可以直接与您的存储过程(而不是中间层或复制代码)进行交互,因此函数允许重复使用数据库。

可使用您选择的语言(如 SQL、PL/pgSQL、C、Python 等)创建函数。

Syntax

创建函数的基本语法如下 −

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;

其中,

  1. function-name 指定函数的名称。

  2. [OR REPLACE] 选项允许修改现有函数。

  3. 该函数必须包含 return 语句。

  4. RETURN 子句指定要从函数返回的数据类型。 return_datatype 可以是基础数据类型、复合数据类型或域数据类型,也可以引用表列的数据类型。

  5. function-body 包含可执行部分。

  6. AS 关键字用于创建独立函数。

  7. plpgsql 是函数实现所用的语言名称。在此,我们对 PostgreSQL 使用该选项,它可以是 SQL、C、内部或用户定义的过程语言的名称。为向后兼容,该名称可以用单引号引起来。

Example

以下示例说明了如何创建和调用独立函数。此函数返回 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)

Function 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)