参考:

https://wiki.postgresql.org/wiki/9.1%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B9%9D%E7%AB%A0

摘记:

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

在PL/pgSQL中你可以把一块运算和一系列命令在数据库服务器里面组成一个块,因此这样就拥有了过程语言的力量并且简化 SQL 的使用,并且能大量节约客户端/服务器通讯之间的开销。

客户端和服务端之间额外的传输将被取消.
客户端不需要也不用客户端和服务端之间进行封装或者传输的中间结果。
可以避免命令的多轮解析

在PL/pgSQL中编写的函数可以用服务器支持的任何标量参数或者数组类型,并且他们可以返回这些类型的任何结果。它们也能接受或者返回任何 声明的复合类型(行类型)。声明一个PL/pgSQL函数返回record函数,这意味这这个结果是一个行类型,这个行的字段是在调用它的查询中指定的。

PL/pgSQL函数能够用VARIADIC标志声明一个可变的数字参数。这个方法实际和SQL的函数是用的方法是一样的。

PL/pgSQL函数也可以声明并接受返回多态的类型anyelement, anyarray, anynonarray, 和anyenum。一个多态的函数实际操作的数据类型可以在不同的调用环境中变化。

PL/pgSQL函数也能声明并返回单个实例的任意一个数据类型集(或者表)。这样的函数通过为结果集每个需要返回的元素执行一个RETURN NEXT生成它的输出,或者用RETURN QUERY的输出来评估一个查询的结果。

最后,PL/pgSQL 函数可以声明为返回void,如果它没什么有用的值可以返回的话。

PL/pgSQL函数也能够用输出的参数来进行声明并代替一个明确的返回类型。这不会为这个语言添加任何基本的功能,但是这样常常是很方便的,特别是返回多个值的时候。这个RETURNS TABLE表示法也能用RETURNS SETOF进行替换。


我觉得虽然plpgsql是过程语言,但是pg中所编写的过程基本上都属于函数,因为关键字create function 和 returns 是固定的,而mysql中可以分开create 存储过程procedure 和函数function 两类,function 都是要明确返回类型的,那再在从上述PL/pgSQL 函数可以声明为返回void可以看出plpgsql 一样可以“模仿”完成procedure的功能扮演,是殊途同归的,只是pg上更加强调这是一种语言:PL/pgSQL,而mysql只是单纯的具备了可编写存储过程和函数这两种功能。

yun=> \dL语言列表名称   |  拥有者  | 信任 |             描述
---------+----------+------+------------------------------plpgsql | postgres | t    | PL/pgSQL procedural language
(1 行记录)

转载于:https://www.cnblogs.com/right-dress/p/4838623.html

PostgreSQL-PL/pgSQL相关推荐

  1. PostgreSQL学习手册(PL/pgSQL过程语言)【转】

    原文http://www.cnblogs.com/stephen-liu74/archive/2012/06/06/2312759.html   一.概述: PL/pgSQL函数在第一次被调用时,其函 ...

  2. PostgreSQL 11 新特性之 PL/pgSQL 增强

    文章目录 PostgreSQL 11 增加了一个新的编程对象,存储过程(PROCEDURE).它与存储函数类似,但是没有返回值.存储过程还支持事务,参考文章"PostgreSQL 11 新特 ...

  3. 【PostgreSQL】官网学习使用 PL/pgSQL编写造数据脚本

    文章目录 1. 前言 2. 成果 3. 创建与使用类似 Java map 的数据结构 3.1 声明数组 3.2 数组赋值 3.3 数组遍历 4. 如何打印调试信息 (可以用来生成回滚语句) 5. 后记 ...

  4. pgsql函数定时更新表_Postgresql PL/PGSQL 程序语言系列 1 (存储过程过时了吗,与函数)...

    年龄到底是不是一个问题,35岁是一个坎, 招聘中有一些门槛这不奇怪,奇怪的是那这些信息去贩卖的人, 让整体的中国中年人活在焦虑和不安中,这绝对不是一个好人应该做的事情, 小范围的事实是可以控制的, 而 ...

  5. PL/pgSQL之入门

    PL/pgSQL介绍 plpgsql入门,介绍使用它有哪些优点以及一个HelloWorld. PL/pgSQL是一种用于PostgreSQL数据库系统的可载入的过程语言. 可以被用来创建函数和触发器过 ...

  6. PL/pgSQL 表达式

    0.表达式的实现方式: 你写的: IF expression THEN ... 将被被服务器的主SQL执行器处理成一个查询: SELECT expression sql实际上执行的是PREPARE命令 ...

  7. pl/postgresql_将PostgreSQL PL / Java安装为PostgreSQL扩展

    pl/postgresql 在2011年,我在PostgreSQL PL / Java上撰写了一系列文章. 基本信息仍然可靠,但是现在有了一种从源代码安装PL / Java的简便得多的方法. 这也消除 ...

  8. 将PostgreSQL PL / Java安装为PostgreSQL扩展

    在2011年,我在PostgreSQL PL / Java上写了一系列文章. 基本信息仍然可靠,但是现在有了一种从源代码安装PL / Java的简便方法. 这也消除了依赖第三方来创建软件包的需要. 这 ...

  9. PostgreSQL PL / java简介

    现代数据库允许以多种语言编写存储过程. 一种常见的实现语言是java.NB,本文讨论了PostgreSQL特定的Java实现. 其他数据库的详细信息会有所不同,但是概念是相同的. PL / Java的 ...

  10. 存储过程C语言与PL/pgSQL实现的效率对比

    为什么80%的码农都做不了架构师?>>>    PL/pgSQL已经有不少优化动作,比如 for i in 1..100000 loop null; end loop; 这是可以瞬间 ...

最新文章

  1. 经典的《JavaScript 权威指南》中的“对象”不经典
  2. EM Alogrithm
  3. 改mysql修改界定符_dbvisualizer参数设置
  4. 如何把即时通讯软件做大做强?
  5. 数据库的开发笔记-字典表
  6. sublime 关闭自动更新
  7. 走在“辞职”路上的数据科学家们!
  8. 几个IE与Firefox的兼容性问题 (一、网络转载)
  9. [kuangbin带你飞] 专题一简单搜索
  10. 【洛谷OJ】传球游戏
  11. 北京时间校准 服务器 显示器 标准,纯干货~北京时间校准显示器实用分享
  12. itunes显示无法更新服务器失败怎么办啊,iTunes更新时出错怎么办?iTunes更新时出错的解决方法...
  13. NYOJ234-吃土豆(双层DP)
  14. 决策树与随机森林(从入门到精通)
  15. 自建云存储:Nextcloud vs. ownCloud vs. Seafile
  16. Teranex Express格式转换器
  17. STM32的中断优先级详解
  18. 联想笔记本如何关闭Fn功能键
  19. godaddy新建二级域名
  20. Windows 10: The Next Chapter

热门文章

  1. 解决Linux下音乐乱码的问题:
  2. Android 内容提供器---内容提供器基础(内容的统一资源标识(URIs))
  3. [目录]Linux 核心系统命令目录
  4. 高一计算机常考内容,高一信息科技合格考知识点.doc
  5. virtualbox 创建桥接网络_VirtualBox 桥接上网方式的配置
  6. hive提供oracle接口嘛,Hive是个什么东东
  7. 生态和场景一站式集成?来看看小程序的“共享主义”
  8. PAI和Hologres的个性化推荐最佳实践
  9. 厉害了!祝贺PolarDB喜提科技进步一等奖
  10. 如何量化技术团队的效能?