Postgresql - 初识 plpgsql - 概述

对于数据库操作人员(DBA、开发、运维)而言,编写存储过程是必不可少的。

我们先来看看官网上是如何介绍PL/pgSQL的。

 

以下翻译自官网:

https://www.postgresql.org/docs/10/static/plpgsql-overview.html#PLPGSQL-ADVANTAGES

 

**************************************************************

PL/PGSQL是PostgreSQL数据库系统的一种可加载的程序语言。PL/PGSQL的设计目标是创建一个可加载的过程语言。

可以用来创建函数和触发程序,

将控制结构添加到SQL语言中,

可以执行复杂的计算,

继承所有用户定义的类型、函数和运算符,

可以定义为受服务器信任,

使用方便。

使用PL/PGSQL创建的函数可以在任何内置函数都可以使用的地方使用。例如,可以创建复杂的条件计算函数,然后使用它们来定义运算符或在索引表达式中使用它们。

 

使用PL / pgSQL的优势

SQL是PostgreSQL语言,大多数其他关系数据库用作查询语言。它携带方便,易于学习。但是每个SQL语句都必须由数据库服务器单独执行。

这意味着客户端应用程序必须将每个查询发送到数据库服务器,等待它被处理,接收和处理结果,进行一些计算,然后向服务器发送进一步的查询。所有这些都会导致进程间通信,并且如果客户机位于与数据库服务器不同的机器上,也会导致网络开销。

使用PL/pgSQL,您可以对数据库服务器内的计算块和一系列查询进行分组,从而具有过程语言的能力以及易于使用SQL,但是可以显著节省客户端/服务器的通信开销。

客户端和服务器之间的额外往返行程被消除。

客户端不需要的中间结果不必在服务器和客户端之间进行封送或传输。

可以避免多轮查询解析

与不使用存储函数的应用相比,这可以导致相当大的性能提高。

此外,使用PL/PGSQL,您可以使用SQL的所有数据类型、运算符和函数。

 

支持的参数和结果数据类型

用PL/pgSQL编写的函数可以接受服务器支持的任何标量或数组数据类型作为参数,并且它们可以返回任何这些类型的结果。它们还可以接受或返回以名称指定的任何复合类型(行类型)。还可以将PL/pgSQL函数声明为返回记录,这意味着结果是行类型,其列由调用查询中的规范确定。

PL/PGSQL函数可以声明为使用可变标记来接受可变数量的参数。这与SQL函数的工作方式完全一样。

还可以声明PL/pgSQL函数以接受和返回多态类型any.、any.、anynon.、anyenum和any.。多态函数处理的实际数据类型可以从调用到调用不同。

还可以声明PL/pgSQL函数以返回任何数据类型的“set”(或表),这些数据类型可以作为单个实例返回。这样的函数通过对结果集中的每个期望元素执行RETURN NEXT,或者使用RETURN QUERY输出评估查询的结果,来生成其输出。

最后,如果没有有用的返回值,则可以声明PL/PGSQL函数返回空值。

PL/PGSQL函数也可以用输出参数来声明,而不是返回类型的显式规范。这不会为语言添加任何基本功能,但是通常很方便,尤其是返回多个值。返回表符号也可以用来代替返回集。

**************************************************************

 

具体的使用、功能、实验我们之后的文章中介绍。

你可能感兴趣的:(Postgresql)