- PostgreSQL 教程
- PostgreSQL - 首页
- PostgreSQL - 概述
- PostgreSQL - 环境设置
- PostgreSQL - 语法
- PostgreSQL - 数据类型
- PostgreSQL - 创建数据库
- PostgreSQL - 选择数据库
- PostgreSQL - 删除数据库
- PostgreSQL - 创建表
- PostgreSQL - 删除表
- PostgreSQL - 模式
- PostgreSQL - 插入查询
- PostgreSQL - 选择查询
- PostgreSQL - 运算符
- PostgreSQL - 表达式
- PostgreSQL - WHERE 子句
- PostgreSQL - AND & OR 子句
- PostgreSQL - 更新查询
- PostgreSQL - 删除查询
- PostgreSQL - LIKE 子句
- PostgreSQL - LIMIT 子句
- PostgreSQL - ORDER BY 子句
- PostgreSQL - GROUP BY
- PostgreSQL - WITH 子句
- PostgreSQL - HAVING 子句
- PostgreSQL - DISTINCT 关键字
- 高级 PostgreSQL
- PostgreSQL - 约束
- PostgreSQL - 连接
- PostgreSQL - UNION 子句
- PostgreSQL - NULL 值
- PostgreSQL - 别名语法
- PostgreSQL - 触发器
- PostgreSQL - 索引
- PostgreSQL - ALTER TABLE 命令
- TRUNCATE TABLE 命令
- PostgreSQL - 视图
- PostgreSQL - 事务
- PostgreSQL - 锁
- PostgreSQL - 子查询
- PostgreSQL - 自动递增
- PostgreSQL - 权限
- 日期/时间函数和运算符
- PostgreSQL - 函数
- PostgreSQL - 有用函数
- PostgreSQL 接口
- PostgreSQL - C/C++
- PostgreSQL - Java
- PostgreSQL - PHP
- PostgreSQL - Perl
- PostgreSQL - Python
- PostgreSQL 有用资源
- PostgreSQL - 快速指南
- PostgreSQL - 有用资源
- PostgreSQL - 讨论
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、内部或用户定义的过程语言的名称。为了向后兼容,名称可以用单引号括起来。
示例
以下示例说明了如何创建和调用独立函数。此函数返回 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)
广告