PostgreSQL---FUNCTION存储过程那些事

之前总结了一下PostgreSQL的序列的相关知识,这篇再来说说存储过程相关的知识点。

存储过程也叫做函数。 PostgreSQL的存储过程是指可以使用SQL对话框进行调用的一组SQL和过程语句(过程语句包括声明,分配,循环,控制流程等),它可以存储在数据库服务器上。

在数据库的实际使用时,存储过程在需要多次查询和操作单个函数的场景中很方便使用。

存储过程的语法

其中的相关参数说明:

function_name:指定存储过程的名称;

[OR REPLACE]:是可选的,表示允许修改或替换现有的存储过程;

RETURN:指定要从存储过程返回的数据类型。数据类型可以是基础数据类型,复合数据类型,或者引用表列的类型;

function_body:表示具体可执行的增删改查的部分;

plpgsql:指定实现该存储过程的语言的名称;

存储过程示例

我们先设计一个在customer顾客表里查找高工资的函数。

首先在数据库里建立一个customer表,并插入一些实例数据

然后在SQL对话框执行关于查找的存储过程函数sql:

具体实际操作如下图:

然后我们可以在数据库的所有函数中看到新创建了一个maxsalary()的函数:

接下来我们直接在SQL对话框中执行调用SELECT maxSalary();这个函数可以得到结果:

可以看到,我们找到了customer表里所有人中高的工资。

看完了概念和用法,再来分析下优缺点。

存储过程的优点:

(1)在次被调用后即被编译,下次再调用时不需要再次编译,减少了应用与数据库服务器的通信开销,提升数据库的整体性能

(2)实现一套业务逻辑被不同应用程序共享,减少应用程序的开发复杂度,保证不同应用程序使用的一致性;

(3)屏蔽使用存储过程中的数据,区分应用程序访问数据的权限,从而更细粒度的加强数据库权限的管理;

(4)实现业务与应用程序的解耦。当业务需求更新时,只需更改存储过程的定义,而不需要更改应用程序;

(5)保护数据库元数据,直接使用SQL语句查询数据库会暴露元数据,而使用存储过程则不需要把数据库表结构暴露给应用程序,提高安全性;

存储过程缺点:

(1)不方便调试,

(2)不便于移植到其它数据库。由于不同数据库的存储过程在定义方式,语言及语法上是不同的,所以移植成本的成本比较高;

相关文章