↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.0 / 6.3
历史版本PostgreSQL 7.0 已于 2005 年 5 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

第 10 章 PL/pgSQL - SQL 过程语言

PL/pgSQL 是Postgres数据库系统的一个 可装载过程语言。

这个软件包最初由 Jan Wieck 编写。

10.1. 概述

PL/pgSQL 的设计目标是创建一种可装载的过程语言,它

  • 可以用来创建函数和触发器过程,

  • 向SQL语言中增加控制结构,

  • 能执行复杂的计算,

  • 继承所有用户定义的类型、函数和操作符,

  • 可以被定义为服务器所信任,

  • 易于使用。

PL/pgSQL 调用处理器在后端第一次调用函数时解析函数的源文本并 生成一棵内部二进制指令树。生成的字节码在调用处理器中通过 函数的对象 ID 来标识。这确保了通过 DROP/CREATE 序列更改函数 会立即生效,而不需要建立新的数据库连接。

对于函数中使用的所有表达式和SQL语句, PL/pgSQL 字节码解释器都会使用 SPI 管理器的 SPI_prepare() 和 SPI_saveplan() 函数创建一个预备好的执行计划。这是在该语句 第一次在 PL/pgSQL 函数中被处理时完成的。因此,一个包含大量 可能需要执行计划的条件语句的函数,只会准备和保存那些在 数据库连接的整个生命期内真正被用到的计划。

除了用户定义类型的输入/输出转换和计算函数之外,凡是能用 C 语言函数定义的东西也都可以用 PL/pgSQL 完成。你可以创建 复杂条件计算函数,之后用它们来定义操作符,或在函数索引中 使用它们。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。