减小字体
增大字体
作者:佚名 来源:本站整理 发布时间:2009-03-16 13:41:33
第十章. PL/pgSQL - SQL 过程语言
概述
描述
例子
PL/pgSQL 是 Postgres 数据库系统的一个可装载的过程语言.
这个包最初是 Jan Wieck 写的.
概述
PL/pgSQL 的设计目标是创建一种可装载的过程语言,可以
可用于创建函数和触发器过程,
为 SQL 语言增加控制结构,
可以执行复杂的计算,
继承所有用户定义类型,函数和操作符,
可以定义为被服务器信任(的语言),
容易使用.
PL/pgSQL 函数第一次被后端调用时,PL/pgSQL 的调用控制器分析函数源文本生成二进制指令树.所生成的字节码在调用控制器里是用函数的对象标识来标记的.这样就保证如果使用 DROP/CREATE 序列修改了函数,不需要建立一个新的数据库联接就能令修改生效.
对于函数里用到的所有表达式和 SQL 语句,PL/pgSQL 字节码解析器使用 SPI 管理器 SPI_prepare() 和 SPI_saveplan() 函数创建一个准备好了的执行规划.这些动作是在(解析器)第一次处理时完成的,独立的语句是在 PL/pgSQL 函数里面处理的.因此,一个带有条件代码的有许多语句的需要执行规划的函数,将只准备和保存那些在整个数据库联接周期内真正使用到的规划.
除了用于用户定义类型的输入/输出转换和计算函数以外,任何可以在 C 语言函数里定义的东西都可以在 PL/pgSQL 里使用.我们可以创建复杂的条件计算函数,并随后将之用于定义操作符或者用于函数索引中.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
描述
PL/pgSQL 的结构
PL/pgSQL 语言是大小写不敏感的语言.所有关键字和标识都可以混合大小写使用.
PL/pgSQL 是一种面向块的语言.一个块象下面这样定义
[<