Oracle存储过程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

这段时间实习,公司要使用存储过程,以前没接触过以为是啥高大上的技术,后来学习了一下,其实就是将一堆SQL命令打个包,下一次遇到类似的情况直接运行整个包也就是存储过程,然后就可以达到同样的效果。


一、前置准备

因为我是使用docker安装的数据库,频繁进行容器执行操作不符合容器隔离的理念,所以我使用dbeaver提供的SQL控制台进行SQL输入。所以下边的操作中增删改操作我用SQL完成,查询操作我是用可视化窗口完成。

1.创建表空间

这个表空间有点类似MYSQL中的database,主要就是在磁盘里划一块空间用作数据存储。

create tablespace 
	learn 
datafile '/opt/oracle/dba/learn.dbf' size 128M;

这个命令的意思是,在 /opt/oracle/dba/ 中生成一个learn.dbf文件用来存储数据,占地128M,需要先确认这个目录是否存在,不存在是不用创建表空间的。

2.创建用户

我们为这次学习专门创建一个用户后边就不使用管理员用户登录了。

create user 
	learn identified by learn 
	default tablespace learn account unlock;

创建一个用户教learn 密码为learn 和表空间learn绑定。

3.赋权

我们将一些权限赋给新用户。

grant connect,resource,dba to learn;

之后可以用dbeaver使用learn用户连接一下,如果可以连接成功,那么就可以进行下一步了
在这里插入图片描述
在这里插入图片描述

二、存储过程

1.创建数据表

我们为测试创建一张数据表。

CREATE TABLE learn_info  (
  id varchar(255)    NOT NULL,
  name varchar(50)   NOT NULL,
  age number NULL
)

2.创建存储过程

固定写法如下。

create or replace procedure 存储过程名
as
begin
  ----------------------------
end;

我们写个简单的案例。

create or replace procedure learn1
as
begin
  INSERT INTO learn_info values('1','zs','20');
end;

现在我们创建这个存储过程。直接将上边的代码扔到SQL终端运行即可。可以使用dbeaver查看。
在这里插入图片描述
然后鼠标右键测验一下能否正常运行。
在这里插入图片描述
在这里插入图片描述
如果执行成功,代表你的SQL可以正常执行。

3.执行存储过程

固定格式。你可以多执行几次。

declare
begin
  learn1('2','lisi','30');
end;

在这里插入图片描述

4.带参执行

刚刚执行的SQL代码都是固定的,这种情况可以用于数据库的初始化,当添加增量数据就明显不能这样操作,我们希望将数据作为参数传入,每次插入的数据都不同。
创建新的存储过程

CREATE OR REPLACE PROCEDURE LEARN1
(id IN varchar2,name IN  varchar2,age IN varchar2)
IS
BEGIN
	INSERT INTO learn_info values(id,name,age);
END LEARN1;

这样我们就可以在运行存储过程是使用参数了。
运行存储过程
在这里插入图片描述
现在就可以将数据在执行存储过程的时候传入

5.控制语句

存储过程中不仅仅可以传入参数,还可以进行流程语句控制的编写。
编写存储过程。

CREATE OR REPLACE PROCEDURE LEARN2
IS
BEGIN
	FOR I IN 1 .. 5 LOOP 
		IF I > 3 THEN 
			INSERT INTO learn_info VALUES('3','w5','35');
			COMMIT;
		ELSE
			INSERT INTO learn_info VALUES('4','AZ','40');
			COMMIT;
		END IF;
	END LOOP;
END LEARN2;

这边同时使用看for循环控制和if条件控制。
之后执行存储过程。

begin
  learn2;
end;

在这里插入图片描述


总结

存储过程还可以和编程代码一样写比较复杂的逻辑,但是由于我最近并没有用到,所以咱是就记录这么多,以后用到了再补。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值