PostgreSQL 教程

浏览23528
更新时间2025-08-21

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;

Where,

  • function-name 指定函数的名称。

  • [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)

相关视频

更多

免费

phpStudy极速入门视频教程
初级phpStudy极速入门视频教程

535903次学习

收藏

免费

Midjourney基础课程
初级Midjourney基础课程

13367次学习

收藏

免费

极客学院Git使用视频教程
初级极客学院Git使用视频教程

48353次学习

收藏

免费

尚观shell视频教程
高级尚观shell视频教程

16864次学习

收藏

免费

尚观Linux入门视频教程
初级尚观Linux入门视频教程

46713次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时 | 62.6万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时 | 39.8万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时 | 73.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号