实际开发的存储过程_PostgreSQL---FUNCTION存储过程那些事

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

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

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

存储过程的语法

11389bd6d418a4110af02bf1310eebe6.png

其中的相关参数说明:

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

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

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

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

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

存储过程示例

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

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

fe6b306e23f1bae60dee099ea84a18c8.png

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

1c19b2369942c49d87b742fbf9209492.png

具体实际操作如下图:

8044c83e99de760070c16fa0f7858206.png

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

f146bd0f20620284dffee278c3a7e699.png

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

1b148c60dbfc870bf26309386a3e0fca.png

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

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

存储过程的优点:

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

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

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

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

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

存储过程缺点:

(1)不方便调试,

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值