postgre创建存储过程_别再说不知道什么是存储过程和存储函数了

本文介绍了存储过程和存储函数的基本概念,包括它们的区别和作用。通过示例展示了在PostgreSQL中创建、调用、查看及删除存储过程和存储函数的语法,强调了存储函数必须有返回值,而存储过程则无此要求。
摘要由CSDN通过智能技术生成

147a503346326f7b3b9fe7ef1996e284.png
  • | 作者:新一、
  • | 简书:https://www.jianshu.com/u/b3263fc54bce
  • | 微信公众号:1024笔记
  • | GitHub:https://github.com/JangYt?tab=repositories
  • | 博客地址:https://blog.csdn.net/qq_41153943

今天项目需要写个存储过程,长时间没有写存储过程有点生疏和忘记了,所以想着写一篇文章来总结下存储过程的一些相关知识,算是复习一下加深记忆。

一、基本概念

这里有两个概念:存储过程和存储函数。

存储过程和存储函数是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的工作,减少数据在数据库和应用服务器之间的传输,能够提高数据库的处理效率。存储过程在高并发数据中使用的比较多。

存储过程和存储函数的区别在于存储函数是必须有返回值的,而存储过程并没有。存储过程的参数可以是in ,out ,inout类型,存储函数的参数类型只能是in。所以可以说存储函数是一个有返回值的存储过程,而存储过程是一个没有返回值的存储函数。

二、存储过程相关操作1、创建、调用存储过程

创建存储过程的基本语法:

create procedure procedure_name([params,.....])
begin
  ----SQL语句
 end;

调用存储过程的语法:

call procedure_name();

实例:

首先创建一个employee表,并插入数据:

DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `lastName` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `departmentID` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
INSERT INTO `employee` VALUES ('1', '亚索', '123qq.com', '201');
INSERT INTO `employee` VALUES ('2', '李青', '12345@qq.com', '201');
INSERT INTO `employee` VALUES ('3', '艾欧尼亚', '774855@qq.com', '203');
INSERT INTO `employee` VALUES ('4', '德玛西亚', '6565@qq.com', '203'

733848cf2936d4bb3a653b88121da7bf.png
创建一个存储过程
create procedure demo1()
 begin
   select * from employee
end$

7e95dd188f62f6ff0c3669970d22b095.png
调用刚刚创建的存储过程
call demo1()$

48c36e9e5f2ba1481f9fcd10f6c6e1f1.png

2、查看和删除存储过程

查看存储过程的基本语法:

查询指定数据库的所有的存储过程
如果不指明type 则默认shi存储过程
select name from mysql.proc where db='数据库名字 and type = 'PROCEDURE'

示例:

select name from mysql.proc where db='jdbc'$

632acb175178e24c127baa789dfe3a71.png
查看指定存储过程的定义
show create procedure [数据库名].存储过程名 G$

0571938c5f62795c61dae56f6aa96906.png
查看存储过程的状态
show procedure status G$

d7bfa9125d8e22150f3c907f3ecc960e.png
删除存储过程
drop procedure 存储过程名称$

6d54ab297fcea6dc082ac0b472806d8f.png

三、存储函数相关操作

存储函数的基本语法与存储过程基本相似:

create function function_name([params type,.....])
returns type
begin
   .....
end;

实例:

定义一个存储过程,返回刚刚创建的employee表中departmentID为203的数据有几条
create function numofemployee(department_ID int)
returns int
begin 
  declare count int;
  select count(*) into count from employee where departmentID=department_ID ;
  return count;
 end$

调用存储函数与存储过程有点不一样

select function_name(params)$

ac3c3cad0a526fb203f7afb05b86dcd4.png

查看存储函数的基本语法:

查询指定数据库的所有的存储函数
select name from mysql.proc where db = '数据库名字' and type= 'FUNCTION'

ae588dd6422667bd6eacdbb204d212a2.png
查看存储过程的状态
show function status G$

603a4ad9eaeec34e120fc8b74eb827b0.png

删除存储函数基本语法:

drop function fun_name$

f4e542cf28cd24891c9dde7dd6759c83.png

这篇文章就是介绍一下关于存储过程和存储函数的一些基本概念和相关的操作,下一篇文章将会着重介绍下存储过程的一些相关语法和使用。

本文原创首发于微信公众号:1024笔记,关注公众号可免费获取更多学习资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值